- 找倒数第N个节点倒是很简单,快慢指针即可。
- 别的倒是没什么问题,问题出现如果删除的是第一个节点的话,需要特殊处理。
- 也还是很简单的题…今天就先这样吧.
public ListNode removeNthFromEnd(ListNode head, int n) {
//快指针
ListNode fast = head;
for(int i=0;i<n;i++) fast = fast.next;
//此时设立慢指针 和pre
ListNode slow = head;
ListNode pre = null;
while(fast!=null){
fast = fast.next;
slow = slow.next;
if(pre==null) pre = head;
else pre = pre.next;
}
if(pre==null) return head.next;
//此时删除slow节点即可
pre.next = slow.next;
slow.next=null;
return head;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)