摘要:鏈表與遞歸第題題目刪除鏈表中等于給定值的所有節(jié)點(diǎn)。示例輸入輸出不使用虛擬頭節(jié)點(diǎn)鏈表不為空,并且頭節(jié)點(diǎn)就是要?jiǎng)h除的元素所有元素都是要?jiǎng)h除的元素,并且在上面已經(jīng)刪完現(xiàn)在的鏈表頭節(jié)點(diǎn)不是要?jiǎng)h除的元素刪除不刪除使用虛擬頭節(jié)點(diǎn)虛擬頭節(jié)點(diǎn)遞歸
鏈表與遞歸 LeetCode第203題
題目: 刪除鏈表中等于給定值 val 的所有節(jié)點(diǎn)。 示例: 輸入: 1->2->6->3->4->5->6, val = 6 輸出: 1->2->3->4->5
1.不使用虛擬頭節(jié)點(diǎn)
public class Solution { public ListNode removeElements(ListNode head, int val) { // 鏈表不為空,并且頭節(jié)點(diǎn)就是要?jiǎng)h除的元素 while (head != null && head.val == val) { ListNode delNode = head; head = head.next; delNode.next = null; } if (head == null) { // 所有元素都是要?jiǎng)h除的元素,并且在上面已經(jīng)刪完 return head; } else { // 現(xiàn)在的鏈表頭節(jié)點(diǎn)不是要?jiǎng)h除的元素 ListNode prev = head; while (prev.next != null) { if (prev.next.val == val) { // 刪除 ListNode delNode = prev.next; prev.next = delNode.next; delNode.next = null; } else { // 不刪除 prev = prev.next; } } return head; } } }
2.使用虛擬頭節(jié)點(diǎn)
public class Solution2 { public ListNode removeElements(ListNode head, int val) { // 虛擬頭節(jié)點(diǎn) ListNode dummyHead = new ListNode(0); dummyHead.next = head; ListNode prev = dummyHead; while (prev.next != null) { if (prev.next.val == val) { ListNode delNode = prev.next; prev.next = delNode.next; delNode.next = null; } else { prev = prev.next; } } return dummyHead.next; } }
3.遞歸
public class Solution3 { public ListNode removeElements(ListNode head, int val) { if (head == null) { return head; } head.next = removeElements(head.next, val); return head.val == val ? head.next : head; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30845.html
摘要:鏈表與遞歸第題題目刪除鏈表中等于給定值的所有節(jié)點(diǎn)。示例輸入輸出不使用虛擬頭節(jié)點(diǎn)鏈表不為空,并且頭節(jié)點(diǎn)就是要?jiǎng)h除的元素所有元素都是要?jiǎng)h除的元素,并且在上面已經(jīng)刪完現(xiàn)在的鏈表頭節(jié)點(diǎn)不是要?jiǎng)h除的元素刪除不刪除使用虛擬頭節(jié)點(diǎn)虛擬頭節(jié)點(diǎn)遞歸 鏈表與遞歸 LeetCode第203題 題目: 刪除鏈表中等于給定值 val 的所有節(jié)點(diǎn)。 示例: 輸入: 1->2->6->3->4->5->6, v...
摘要:鏈表與遞歸已經(jīng)從底層完整實(shí)現(xiàn)了一個(gè)單鏈表這樣的數(shù)據(jù)結(jié)構(gòu),并且也依托鏈表這樣的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)了棧和隊(duì)列,在實(shí)現(xiàn)隊(duì)列的時(shí)候?qū)︽湵磉M(jìn)行了一些改進(jìn)。計(jì)算這個(gè)區(qū)間內(nèi)的所有數(shù)字之和。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言 【從蛋殼到滿天飛】JAVA 數(shù)據(jù)結(jié)構(gòu)解析和算法實(shí)現(xiàn),全部文...
摘要:鏈表與遞歸已經(jīng)從底層完整實(shí)現(xiàn)了一個(gè)單鏈表這樣的數(shù)據(jù)結(jié)構(gòu),并且也依托鏈表這樣的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)了棧和隊(duì)列,在實(shí)現(xiàn)隊(duì)列的時(shí)候?qū)︽湵磉M(jìn)行了一些改進(jìn)。計(jì)算這個(gè)區(qū)間內(nèi)的所有數(shù)字之和。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言 【從蛋殼到滿天飛】JAVA 數(shù)據(jù)結(jié)構(gòu)解析和算法實(shí)現(xiàn),全部文...
摘要:雙向鏈表雙向鏈表作為在日常開(kāi)發(fā)中最常用的數(shù)據(jù)結(jié)構(gòu)之一,應(yīng)用十分廣泛,在諸多著名開(kāi)源項(xiàng)目中如的結(jié)構(gòu),的中均是核心實(shí)現(xiàn)。 雙向鏈表 雙向鏈表作為在日常開(kāi)發(fā)中最常用的數(shù)據(jù)結(jié)構(gòu)之一,應(yīng)用十分廣泛,在諸多著名開(kāi)源項(xiàng)目中如redis的list結(jié)構(gòu), groupcache的lru中均是核心實(shí)現(xiàn)。在設(shè)計(jì)此類數(shù)據(jù)集合的時(shí)候,外面看上去鏈表似乎與數(shù)組相似,但鏈表是一個(gè)非連續(xù)性內(nèi)存的存儲(chǔ)方案,提供了高效的節(jié)...
閱讀 2858·2021-11-22 15:22
閱讀 19314·2021-09-22 15:00
閱讀 1446·2021-09-07 09:58
閱讀 1248·2019-08-30 13:01
閱讀 2453·2019-08-29 16:27
閱讀 2355·2019-08-26 13:25
閱讀 1628·2019-08-26 12:13
閱讀 948·2019-08-26 11:53