[劍指 Offer]22 連結串列中倒數第k個節點 Java實現
阿新 • • 發佈:2020-12-19
題目
輸入一個連結串列,輸出該連結串列中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即連結串列的尾節點是倒數第1個節點。例如,一個連結串列有6個節點,從頭節點開始,它們的值依次是1、2、3、4、5、6。這個連結串列的倒數第3個節點是值為4的節點。
示例:
給定一個連結串列: 1->2->3->4->5, 和 k = 2.
返回連結串列 4->5.
程式碼
每次用hashmap都好慢!(
但是就想用用不熟的東西
一開始看到評論說有人用雙指標, 但是我腦袋裡就直接蹦出圖來了(
把所有東西一股腦存到圖裡然後按圖索驥不就好了嗎(x
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
int flag = 0;
//用於計數噠
ListNode next = head;
//定義一個用於儲存的類~
HashMap<Integer,ListNode> hmap = new HashMap<>();
//hashmap沖沖衝
while(next != null){
//如果不是空就別停下來!
hmap.put(flag++, next);
next = next.next;
}
return hmap.get(flag - k);
//返回一個物件就好啦
}
}