-
-
Notifications
You must be signed in to change notification settings - Fork 100
/
Copy pathlian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.js
56 lines (53 loc) · 1.56 KB
/
lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
// 快慢指针
// 快指针先走K步
// 两个指针一起走 快指针到达终点后 返回慢指针
var getKthFromEnd = function (head, k) {
if (!head) return head // 处理边界情况 空链表直接返回
let first = head // 快指针
let sencond = head // 慢指针
// 快指针先走K步
for (let i = 0; i < k; i++) {
first = first.next
}
// 两个指针一起走 快指针到达终点后 返回慢指针
while (first) {
first = first.next
sencond = sencond.next
}
return sencond
}
/**
* 递归找层级 从末端开始算层级
* 找到最后第k个层级 返回该链表
*/
// var getKthFromEnd = function (head, k) {
// if (!head) return head // 处理边界情况 空链表直接返回
// let help = (currList) => {
// // 最后层级
// if (currList == null) {
// return 0
// }
// let res = help(currList.next)
// // 判断是否找到层级
// if (typeof res === 'number') {
// // 未找到 增加层级
// res += 1
// } else {
// // 找到层级 直接返回链表
// return res
// }
// // 层级相等 找到倒数链表 返回链表
// if (res === k) return currList
// // 层级未找到 继续递归
// if (res < k) return res
// }
// return help(head)
// };
// 找到所有层级 根据数量 再遍历一遍 到指定位置停下 返回