题解 | #链表中倒数最后k个结点#
链表中倒数最后k个结点
https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
此题难度太小,但有很多可以使用的简单办法,看完感到自己的方法可以再进步,特此分享
public ListNode FindKthToTail(ListNode pHead, int k) {
int n = len(pHead);
if (n < k) {
return null;
}
ListNode cur=pHead;
int m=n-k;
while (m!=0) {
cur=cur.next;
m--;
}
return cur;
}
public int len(ListNode head) {
ListNode cur = head;
int count = 0;
if (cur==null) {
return 0;
}
while (cur!=null){
cur=cur.next;
count++;
}
return count;
}
}
此方法为自己的土方法,还有思路更简单的方法如下:
class Solution:
def FindKthToTail(self , pHead , k ):
# write code here
# 快慢指针
fast = pHead
slow = pHead
# 快指针先走k步
for i in range(0, k):
if not fast:
return None
fast = fast.next
# 双指针同时行走
while fast:
fast = fast.next
slow = slow.next
return slow
运用快慢指针,让快指针先走k步,再让慢指针跟上。
如上