1. 程式人生 > 其它 >[劍指 Offer]22 連結串列中倒數第k個節點 Java實現

[劍指 Offer]22 連結串列中倒數第k個節點 Java實現

技術標籤:劍指offerjava

在這裡插入圖片描述

題目

輸入一個連結串列,輸出該連結串列中倒數第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); //返回一個物件就好啦 } }