19. 删除链表的倒数第N个节点

技术19. 删除链表的倒数第N个节点 19. 删除链表的倒数第N个节点两次遍历
class Solution {public ListNode removeNthFromEnd(ListNode hea

19.删除链表的倒数第普通个节点

两次遍历

解决方案类{

公共列表节点removentFromend(列表节点头,int n){ 0

/**

* 两次遍历

* 先得到链表的长度,再正向遍历到长度n的位置,也就是待删除节点的前一个节点

*/

ListNode DummyHead=new ListNode(0,head);

ListNode cur=dummyHead.next

(同Internationalorganizations)国际组织长度=0;

while (cur!=null){ 0

长度;

cur=cur.next

}

ListNode prev=dummyHead

for(int I=0;我长度-n;I){ 0

prev=prev.next

}

prev。next=prev。下一个。接下来;

返回dummyHead .下一个

}

}

/**

* 时间复杂度O(n)

* 空间复杂度O(1)

*/

双指针

解决方案类{

公共列表节点removentFromend(列表节点头,int n){ 0

/**

* 一次遍历(双指针)

*对先右移,当两个指针的区间长度为n时,再一起移动,直到right==null,此时左边的指向为待删除节点

*/

ListNode DummyHead=new ListNode(0,head);

ListNode left=dummyHead

ListNode right=dummyHead.next

for(int I=0;I n;I){ 0

右=右。下一个

}

而(对!=null){ 0

左=左。下一个

右=右。下一个

}

向左。下一个=向左。下一个。接下来;

返回dummyHead .下一个

}

}

/**

* 时间复杂度O(n)

* 空间复杂度O(1)

*/

https://leet代码-cn。com/problems/remove-n-node-from-end-list/

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153035.html

(0)

相关推荐