剑指offer题解【链表中倒数第k个结点】

import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    public ListNode FindKthToTail(ListNode head, int k) {
        ArrayList<ListNode> nodeList = new ArrayList<ListNode>();
        ListNode resultNode = head;
        Stack<ListNode> stack = new Stack<ListNode>();
        int size = 0;
        while (head != null) {
            stack.add(head);
            head = head.next;
            size++;
        }
        if (k <= 0) {
            resultNode = null;
        } else if (size >= k) {
            while (!stack.isEmpty()) {
                nodeList.add(stack.pop());
            }
            resultNode = nodeList.get(k - 1);
        } else if (size < k) {
            resultNode = null;
        }
        return resultNode;
    }
}

这部分是考察完整性的。前面做过一个倒序的题,所以在这里首先想到使用栈来实现倒序。
需要检查k的合法性,当k<=0时,是不合法的,返回空,当k>链表长度时,k也是不合法的,同样需要返回空。0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章