单向链找倒数第N个节点
假设有个单向链,我们并不知道长度,要求找到倒数的第N个节点。
解题思路
用常规的数学思路去解是不行的,我们可以用逻辑思路去解。
首先,既然是单向链,肯定有头有尾,就像一个轨道一样有起有终。那么假设我们有一列火车的长度就是N,当火车驶到终点时,车位的位置不就是我们要找的位置吗?
代码实操
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| /**
* 有个不知道长度的单向链node,我们要找到其倒数第num个节点返回
* @param num
* @return
*/
private static Node findNode(int num) {
//定义头尾指针
Node nodeHead = node;
Node nodeTail = node;
//让头先走num步
for (int i = 0; i < num - 1; i++) {
nodeHead = nodeHead.next;
}
//头尾一起,一步一个脚印,直到头触底
while (nodeHead.next != null) {
nodeTail = nodeTail.next;
nodeHead = nodeHead.next;
}
//返回尾,此时尾指针指向的就是我们要找的num节点
return nodeTail;
}
|