2019-03-18-算法-进化(删除链表的倒数第N个节点)
生活随笔
收集整理的這篇文章主要介紹了
2019-03-18-算法-进化(删除链表的倒数第N个节点)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給定一個(gè)鏈表,刪除鏈表的倒數(shù)第 n 個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。
示例:
說(shuō)明:
給定的 n 保證是有效的。
進(jìn)階:
你能?chē)L試使用一趟掃描實(shí)現(xiàn)嗎?
解法:
/*** 思路1:樸素法,第一遍遍歷找到鏈表長(zhǎng)度,第二遍找到應(yīng)刪除元素的正序index* @param head* @param n* @return*/public ListNode removeNthFromEnd(ListNode head, int n) {int len=0;ListNode node = head;while(node!=null) {len++;node=node.next;}node=head;if(len==n) {return head.next;}for(int i=0;i<(len-n-1);i++) {node=node.next;}node.next=node.next.next;return head;}思路2:雙指針?lè)?/strong>
/*** 思路2:雙指針?lè)? 指針1與指針2間隔為n,當(dāng)指針2到達(dá)尾部的時(shí)候,指針1的next就是應(yīng)刪除的元素* @param head* @param n* @return*/public ListNode removeNthFromEnd(ListNode head, int n) {ListNode ya = new ListNode(0);ya.next = head;ListNode p1 = ya, p2=ya;for(int i=0;i<n;i++) {p1=p1.next;}while(p1.next!=null) {p1=p1.next;p2=p2.next;}p2.next = p2.next.next;return ya.next;} 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的2019-03-18-算法-进化(删除链表的倒数第N个节点)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 4nm 之战:AMD 正洽谈迁移部分订单
- 下一篇: 2019-03-18-算法-进化(反转链