题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路
- 设置一对快慢指针
2.快指针先走k步,若快指针没走完k步便为null,直接返回null即可
3.快慢指针同时移动,若快指针指向null,直接返回慢指针即可
Java代码实现
public ListNode FindKthToTail(ListNode head,int k) {
ListNode fast = head;
ListNode slow = head;
while(k>0 && fast != null){
fast = fast.next;
k--;
}
if(k>0){
return null;
}
while(fast != null){
slow = slow.next;
fast = fast.next;
}
return slow;
}
Golang代码实现
func FindKthToTail(head *ListNode,k int) *ListNode{
fast,slow := head,head
for k > 0 && fast != nil {
fast = fast.Next
k--
}
if k>0 {
return nil
}
for fast != nil {
fast = fast.Next
slow = slow.Next
}
return slow
}
有疑问加站长微信联系(非本文作者)