Lintcode: Nth to Last Node in List

Find the nth to last element of a singly linked list. 



The minimum number of nodes in list is n.



Example

Given a List  3->2->1->5->null and n = 2, return node  whose value is 1.

Runner Technique: 两个指针都从Dummy node出发,结束条件是runner.next!=null

 1 public class Solution {

 2     /**

 3      * @param head: The first node of linked list.

 4      * @param n: An integer.

 5      * @return: Nth to last node of a singly linked list. 

 6      */

 7     ListNode nthToLast(ListNode head, int n) {

 8         // write your code here

 9         ListNode dummy = new ListNode(0);

10         dummy.next = head;

11         ListNode walker = dummy;

12         ListNode runner = dummy;

13         while (runner.next != null && n>0) {

14             runner = runner.next;

15             n--;

16         }

17         while (runner.next != null) {

18             runner = runner.next;

19             walker = walker.next;

20         }

21         return walker.next;

22     }

23 }

 

你可能感兴趣的:(list)