链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
思路:
重点是找到要删除元素的前驱
1.设置left和right指针,均从head开始
2.right向后移动N位
3.如果right为空,说明删除的是第一位元素(0_0)自己画一画吧
4.否则,right和left同时后移,直到right下一跳为空
5.此时left为要删除的元素的前驱
6.删,就不说了吧,看代码
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
//0.判空
if(head==null||head.next==null){
return null;
}
//1.
ListNode right=head;
ListNode left=head;
//2.
for(int i=0;i<n;i++){
right=right.next;
}
//3.
if(right==null){
return head.next;
}
//4.
while(right.next!=null){
right=right.next;
left=left.next;
}
//5.
//6.
left.next=left.next.next;
return head;
}
}