劍指offer刷題記錄14——連結串列中倒數第k個結點
阿新 • • 發佈:2018-12-12
題目描述
輸入一個連結串列,輸出該連結串列中倒數第k個結點。
想到利用雙指標標記頭部,移動第二個指標直到距離為k - 1,再同時移動兩個指標,當第二個指標指向尾部,第一個指標則指向倒數第k個結點。
解法一:
public class Solution { public ListNode FindKthToTail(ListNode head,int k) { if(head == null || k == 0) { return null; } ListNode end = head; while(k - 1 > 0) { end = end.next; if(end == null) { return null; } k--; } while(end.next != null) { end = end.next; head = head.next; } return head; } }
要注意考慮各種異常情況處理。
執行時間:15ms
佔用記憶體:9680k
當然也可以用棧結構來解決問題↓
解法二:
import java.util.Stack; public class Solution { public ListNode FindKthToTail(ListNode head,int k) { Stack<ListNode> stack = new Stack<ListNode>(); if(k == 0) { return null; } if(head != null) { stack.push(head); head = head.next; } while(k != 1) { stack.pop(); k--; } return stack.pop(); } }
【未完待續】