class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
if (head == null){
return head;
}
if (head.next == null && n == 1){
return null;
}
//前驱节点 prev 目标节点 target 临时节点 temp
ListNode prev = head, target = head;
for (int i = 0; i < n; i++){
target = target.next;
}
for (; target != null; prev =prev.next, target = target.next);
target = prev;
for (prev = head ;prev.next != target && prev != target; prev = prev.next);
//判断是不是要删除头结点
if (target == prev){
target = head.next;
head.next = null;
return target;
}
if (target.next == null){
prev.next = null;
}else {
prev.next = target.next;
target.next = null;
}
return head;
}
}
删除链表的倒数第n个元素
最新推荐文章于 2024-04-24 15:31:53 发布