Question:
Implement an algorithm to find the nth to last (倒数第n个) element of a singly linked list.
Analyze:
we can simply use two pointers, and fix one position of the pointer and set it to the head of the list, and then, move another pointer to the place where the distance between these two pointers is n. Then, we move both pointers at the same time until one of the pointer reaches the end of the list.
Code:
public static Node nthtoLastNode(Node head, int n) {
Node node = head;
int count = n - 1; //be aware!
//move the pointer to the place where
//the distances between these two pointers is n
while (count >= 1 && node.next != null) {
count--;
node = node.next;
}
//the length of the list is less than n
if (count != 0) return null;
// move the two pointers together
while (node.next != null) {
head = head.next;
node = node.next;
}
return head;
}
http://blog.youkuaiyun.com/beiyetengqing
本文介绍了一种使用双指针技术查找单链表中倒数第N个元素的方法。通过设置两个指针并保持它们之间的固定距离N,当其中一个指针到达链表尾部时,另一个指针恰好指向倒数第N个节点。
9378

被折叠的 条评论
为什么被折叠?



