連結串列中倒數第k個節點
阿新 • • 發佈:2020-08-07
輸入一個連結串列,輸出該連結串列中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即連結串列的尾節點是倒數第1個節點。例如,一個連結串列有6個節點,從頭節點開始,它們的值依次是1、2、3、4、5、6。這個連結串列的倒數第3個節點是值為4的節點。
示例:
給定一個連結串列: 1->2->3->4->5, 和 k = 2.
返回連結串列 4->5.
使用雙指標則可以不用統計連結串列長度。
演算法流程:
初始化: 前指標 former 、後指標 latter ,雙指標都指向頭節點 head 。
構建雙指標距離: 前指標 former 先向前走 kk 步(結束後,雙指標 former 和 latter 間相距 kk 步)。
返回值: 返回 latter 即可。
1 /*連結串列中倒數第k個節點*/ 2 public ListNode getKthFromEnd(ListNode head, int k) { 3 ListNode fast = head, slow = head; 4 int num = 0; 5 while(fast != null) { 6 if (num >= k) { 7 slow = slow.next; 8 } 9 fast = fast.next; 10 num++; 11 } 12 return slow; 13 }