Find the nth to last element of a singly linked list

本文介绍了一种使用双指针技术查找单链表中倒数第N个元素的方法。通过设置两个指针并保持它们之间的固定距离N,当其中一个指针到达链表尾部时,另一个指针恰好指向倒数第N个节点。

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值