链表中倒数第k个结点
题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路
- 设置一对快慢指针
- 快指针先走k步,若快指针没走完k步便为null,直接返回null即可
- 快慢指针同时移动,若快指针指向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 }