# 剑指 Offer 22. 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。
# 示例
给定一个链表: 1->2->3->4->5, 和 k = 2.
返回链表 4->5.
1
2
3
2
3
# 解答
快慢指针
p
,q
两个指针,让p
先走k
步,然后p
,q
一起走,直到p
为null
var getKthFromEnd = function(head, k) {
let p=head, q=head, i=0
while(p) {
if(i>=k) {
q = q.next
}
p = p.next
i++
}
return i<k ? null : q;
};
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
栈方法
var getKthFromEnd = function(head, k) {
//栈方法
var stack = []
var ans = []
//所有节点入栈
while(head){
stack.push(head)
head = head.next
}
//出栈第k个节点
while(k > 0){
ans = stack.pop()
k--
}
return ans
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16