解题思路
使用虚拟的头节点,使得头节点像普通节点一样可以直接索引
减少判断的条件
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
ListNode dummy = new ListNode();
dummy.next = head;
ListNode fast=head,slow=dummy;
while(fast != null && k!=0){
k--;
fast=fast.next;
if(fast==null && k!=0) return head; // 如果删除的范围超出了长度,直接返回原节点
}
while(fast!=null){ // 一直遍历到末尾
fast=fast.next;
slow=slow.next;
}
return slow.next;
}
}