剑指Offer:链表中倒数第k个结点【22】
剑指Offer:链表中倒数第k个结点【22】
题目描述
输入一个链表,输出该链表中倒数第k个结点。
解题思考
我们定义两个指针L和R,R事先移动K-1个位置,然后两者同时往后移动直到遇到R的下个节点为空,此时L节点的位置就是倒数第K个节点。
Java题解
package linklist; public class FindKthToFail { public static ListNode FindKthToTail(ListNode head,int k) { if(head==null||k==0) return null; ListNode ptr = head; for(int i=1;i<k;i++) { if(head.next==null) return null; head = head.next; } while (head.next!=null) { ptr=ptr.next; head=head.next; } return ptr; } public static void main(String[] args) { ListNode n1 = new ListNode(1); ListNode n2 = new ListNode(2); ListNode n3 = new ListNode(3); ListNode n4 = new ListNode(4); ListNode n5 = new ListNode(5); n1.next=n2; n2.next=n3; n3.next=n4; n4.next=n5; System.out.println(FindKthToTail(n1,2).val); } }