天天看點

算法學習之連結清單中倒數第k個結點

題目:輸入一個連結清單,輸出該連結清單中倒數第k個結點。

“快慢指針”解題:我們取兩個點A、B。都從起點出發,然後A提前出發,走到k-1時B在出發。A到達終點時,B恰好在K點。

public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        if(head==null||k<=0){
            return null;
        }
        ListNode fast = head;
        ListNode low = head;
        while(k-->1){
            if(fast.next==null){
                return null;
            }
            fast = fast.next;
        }
        while(fast.next!=null){
            fast = fast.next;
            low = low.next;
        }
        return low;
    }
}
           
  • 時間複雜度:O(n)。
  • 空間複雜度:O(1)。

繼續閱讀