• 描述

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

注意:本题相对原题稍作改动

  • 示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:
  • 说明

给定的 k 保证是有效的。

  • Solution

双指针一看就明白

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public int kthToLast(ListNode head, int k) {
       ListNode fast = head,slow = head;
       int count = 0;
       while(fast != null){
           fast = fast.next;
           count++;
           if(count > k){
               slow = slow.next;
           }
       }
       return slow.val;
    }
}
  • Solution

效率低的方法

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public int kthToLast(ListNode head, int k) {
        Map<Integer,Integer> map = new HashMap<>();
        int index = 0;
        while(head != null){
            map.put(index++,head.val);
            head = head.next;
        }
        return map.get(index - k);
    }
}