本文共 966 字,大约阅读时间需要 3 分钟。
运用双指针法:
先让一个指针在前面走k个节点。
然后两个指针一起走,等到后面那个指针到达终点,前面这个指针就是第k个节点
package List;public class FindKthFromEnd { /** * 问题描述:找到一个链表中的第k个节点 * 解法:双指针法: */ public static Node findKthFromEnd(Node head, int k){ if(head == null){ return null; } Node ahead = head; Node back = head; int count = k - 1;//从头节点移动到第k个元素是移动k-1次, while(ahead != null && count != 0){ ahead = ahead.next; count--; } if(ahead == null){ return null; } ahead = ahead.next;//因为后节点在链首位置,所以前节点需要先移动一次 while(ahead != null){ ahead = ahead.next; back = back.next; }; return back; } public static void main(String[] args){ Node node1 = new Node(1); Node node2 = new Node(2); Node node3 = new Node(3); node1.next = node2; node2.next = node3; System.out.print(findKthFromEnd(node1,3).value); }}
转载地址:http://tnzji.baihongyu.com/