输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点
给定一个链表: 1->2->3->4->5, 和 k = 2.
返回链表 4->5.
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof
var getKthFromEnd = function(head, k) {
var fast = head;
var flag = 0;
while(fast){
if(flag>=k){
head = head.next;
}
fast = fast.next;
flag++;
}
return head;
};
拆解:
1.设定有两条链表,让两条链表的值全都相等
2.让其中一条链表先跑(也就是题目输入给定的那条链表),然后给一个中间变量,用来记录这个链表跑了多少步,每跑一步加1
3.题目给了个k,就让先跑的那个跑了k步,跑了k步了,还在起点的那条链表可以开始跑了,这时候双方总共差k步
4.当先跑的那个跑完了,也就是到了倒数第一个节点,那根据第三点,其实跑得慢点的那条链表就处在倒数第k个节点(因为两条链表的间隔始终是k步)