题目:
输入一个链表,输出该链表中倒数第k个节点。
从1开始技术,即链表的尾节点为倒数第1个节点
思路:
倒数第1个节点和倒数第k个节点相距k - 1个节点,设定两个指针,让第1个指针先走k-1步,第2个指针再同时移动,当第1个指针走到了末尾,则第2个指针走到了倒数第k个节点
代码实现:
public class Twelfth { class Node{ Node next; int val; } public static Node findNode(Node head, int k){ if(head == null || k < 1){ return null; } Node pointer1 = head; Node pointer2 = head; for(int i = 1; i < k; i ++){ if(pointer1.next != null){ pointer1 = pointer1.next; }else { //已经没有节点了,说明i没有到大k-1,说明k太大,链表中没有那么多元素 return null; } } while(pointer1.next != null){ pointer1 = pointer1.next; pointer2 = pointer2.next; } return pointer2; } }