劍指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

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