Nth to Last Node in List

2015-11-25  本文已影响47人  ab409

Nth to Last Node in List


今天是一道简单的题目,来自LintCode,难度为Easy,Acceptance为40%

题目如下

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.

解题思路及代码见阅读原文

回复0000查看更多题目

解题思路

首先,这道题目很简单,相信很多同学都见过了,一看到这题应该就有了思路:用一个快指针先走n步,然后再和慢指针一块走,当快指针走到null时,慢指针就是我们要找的节点。

然后,该题其实是进行了简化了的,即他规定了链表的长度比n大,这样我们就不用求链表的长度了。

最后,就是要注意细节,保证无bug。

(今天的头图也是此意,雍正皇帝,干掉bug(八阿哥))

代码如下

Java版

/**
 * Definition for ListNode.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int val) {
 *         this.val = val;
 *         this.next = null;
 *     }
 * }
 */ 
public class Solution {
    /**
     * @param head: The first node of linked list.
     * @param n: An integer.
     * @return: Nth to last node of a singly linked list. 
     */
    ListNode nthToLast(ListNode head, int n) {
        // write your code here
        if(null == head || n <= 0)
            return null;
       ListNode fast = head, slow = head;
        for(int i = 0; i < n; i++) {
            fast = fast.next;
        }
        while(fast != null) {
            fast = fast.next;
            slow = slow.next;
        }
        return slow;
    }   
}
上一篇下一篇

猜你喜欢

热点阅读