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 List3->2->1->5->null
andn = 2
, return node whose value is1
.
解题思路及代码见阅读原文
回复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;
}
}