倒数第K个节点。思路清晰
链表指针的解法中使用前后指针技巧
思路:
- 首先让前指针先走K步
- 此时后指针还在head处,那么两者之间的差距就是题目中k步
- 这时候让后指针和前指针共同走。当前指针走到链表结尾处,后指针正好就是倒数第k个节点
注意点:
- 链表可能只有长度5,但是题目可能需要倒数第10个节点,显然不可能,会出现空指针。所以需要对空指针进行判空。
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head == null) return null;
ListNode pre = head;//前指针
ListNode cur = head;//后指针
while(pre != null && (k--)!=0){
//防止越界出现空指针
pre = pre.next;
}
//当走到这里的时候,pre可能是因为出现空指针提前结束了,所以进行判断。只有k还没减到0的时候pre又==null,才表示提前结束
if(pre == null && k != 0) return null;
while(pre != null) {
pre = pre.next;
cur = cur.next;
}
return cur;



京公网安备 11010502036488号