014 鏈表中倒數第k個結點
阿新 • • 發佈:2019-02-25
校驗 find ava 第一個 ack [] urn 輸入 void
1.題目
輸入一個鏈表,輸出該鏈表中倒數第k個結點。
2.思路
Java代碼,通過校驗。代碼思路如下:兩個指針,先讓第一個指針和第二個指針都指向頭結點,然後再讓第一個指正走(k-1)步,到達第k個節點。
然後兩個指針同時往後移動,當第一個結點到達末尾的時候,第二個結點所在位置就是倒數第k個節點了。
3.程序
1 package first; 2 3 public class FindKthToTailTest { 4 public static void main(String[] args){ 5 ListNode head = newListNode(); 6 ListNode second = new ListNode(); 7 ListNode third = new ListNode(); 8 ListNode forth = new ListNode(); 9 head.next = second; 10 second.next = third; 11 third.next = forth; 12 head.val = 1; 13 second.val = 2;14 third.val = 3; 15 forth.val = 4; 16 FindKthToTailTest test = new FindKthToTailTest(); 17 ListNode result = test.FindKthToTail(head, 1); 18 System.out.println(result.val); 19 } 20 21 public ListNode FindKthToTail(ListNode head,int k){ 22 if(head == null || k <= 0){ 23 return null; 24 } 25 ListNode ANode = head; 26 ListNode BNode = null; 27 for(int i = 0;i<k-1;i++){ 28 if(ANode.next != null) 29 ANode = ANode.next; 30 else 31 return null; 32 } 33 BNode = head; 34 while(ANode.next != null){ 35 ANode = ANode.next; 36 BNode = BNode.next; 37 } 38 return BNode; 39 } 40 }
014 鏈表中倒數第k個結點