力扣java-返回倒数第k个节点

题目描述 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 思路: 双指针 第一个指针先走k步,然后第二个指针在从头走,这个时候两个指针同时移动。

当第一个指针移动到末尾的时候,返回第二个指针就可以了,第二个指针指向的值就是我们找的倒数第k个结点。

class Solution {
          
   
    public int kthToLast(ListNode head, int k) {
          
   
        ListNode first = head;//初始化first指针指向头结点
        ListNode second = head;//初始化second指针指向头结点
        while(k -- > 0){
          
   //first指针先走k步
            first = first.next;
        }
        while(first != null){
          
   //循环条件是first指针不为空,走到null说明first走到链表的末尾
           //两个指针分别移动
            first =first.next;
            second =second.next;
        }
         return second.val;//返回second指针指向的值
    }
       
}
经验分享 程序员 微信小程序 职场和发展