摘要:和上一道題不同的地方就是,需要用雙指針操作,且最后要返回,以防止結(jié)點(diǎn)即的情況返回錯(cuò)誤的結(jié)果。令,用進(jìn)行查重操作,是的前結(jié)點(diǎn)。當(dāng)和等值的時(shí)候,后移至第一個(gè)不等值的點(diǎn),用指向新的即可。
Remove Duplicates form Sorted List I Problem
Given a sorted linked list, delete all duplicates such that each element appear only once.
ExampleGiven 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.
遇到后一個(gè)結(jié)點(diǎn)和當(dāng)前結(jié)點(diǎn)相等,就用當(dāng)前結(jié)點(diǎn)指向下一個(gè)的下一個(gè)結(jié)點(diǎn)。
Solutionpublic class Solution { public static ListNode deleteDuplicates(ListNode head) { if (head == null) return head; ListNode node = head; while (node.next != null) { if (node.val == node.next.val) node.next = node.next.next; else node = node.next; } return head; } }Remove Duplicates form Sorted List II Problem
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
ExampleGiven 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
和上一道題不同的地方就是,需要用雙指針操作,且最后要返回dummy.next,以防止head結(jié)點(diǎn)即duplicate的情況返回錯(cuò)誤的結(jié)果。
令pre = dummy, cur = head,用cur進(jìn)行查重操作,pre是cur的前結(jié)點(diǎn)。當(dāng)cur和cur.next等值的時(shí)候,cur后移至第一個(gè)不等值的點(diǎn),用pre指向新的cur即可。
public class Solution { public static ListNode deleteDuplicates(ListNode head) { ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy, cur = head; while (cur != null && cur.next != null) { if (cur.val == cur.next.val) { int val = cur.val; while (cur != null && cur.val == val) cur = cur.next; pre.next = cur; } else { pre = pre.next; cur = cur.next; } } return dummy.next; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65790.html
摘要:思路原數(shù)組長(zhǎng)度為,則返回原數(shù)組長(zhǎng)度不為,則至少有個(gè)元素。將所有不重復(fù)的數(shù)值賦給,而當(dāng)和相等時(shí),不做處理。最后返回的就是不同元素的個(gè)數(shù),也是新數(shù)組的長(zhǎng)度。只有在時(shí),才對(duì)賦值。注意,每次初始化的時(shí)候要分兩種情況,這就意味著從的時(shí)候開始遍歷。 Remove Duplicates from Sorted Array I Problem Given a sorted array, remove ...
摘要:題目要求翻譯將鏈表中重復(fù)的元素全部刪除,返回新的頭結(jié)點(diǎn)。相比于,這里將重復(fù)的元素全部刪除。除此以外,我們還需要知道重復(fù)元素的前一個(gè)值和重復(fù)元素的最后一個(gè)值。如果存在重復(fù)值,則跳過重復(fù)值后,前節(jié)點(diǎn)不變,否則前節(jié)點(diǎn)跟隨后節(jié)點(diǎn)同時(shí)向后移動(dòng)。 題目要求 Given a sorted linked list, delete all nodes that have duplicate number...
Given a sorted linked list, delete all nodes that have duplicatenumbers, leaving only distinct numbers from the original list. https://leetcode.com/problems... # Definition for singly-linked list. # c...
摘要:題目要求從有序鏈表中刪除重復(fù)的數(shù)字,并且返回刪除后的頭結(jié)點(diǎn)例如輸入鏈表為返回這題和相似,只是數(shù)據(jù)結(jié)構(gòu)從數(shù)組變成了鏈表若還有更好的思路,請(qǐng)多多指教想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾 題目要求: 從有序鏈表中刪除重復(fù)的數(shù)字,并且返回刪除后的頭結(jié)點(diǎn)例如輸入鏈表為1->1->2,返回1->2 這題和leetcode26相似,只是數(shù)據(jù)結(jié)構(gòu)從數(shù)組變成了鏈表 /*...
摘要:雙指針法復(fù)雜度時(shí)間空間思路我們可以將不重復(fù)的序列存到數(shù)列前面,因?yàn)椴恢貜?fù)序列的長(zhǎng)度一定小于等于總序列,所以不用擔(dān)心覆蓋的問題。代碼雙指針法復(fù)雜度時(shí)間空間思路思路和上題一樣,區(qū)別在于記錄前兩個(gè)遍歷到的數(shù)字來幫助我們判斷是否出現(xiàn)了第三遍。 Remove Duplicates from Sorted Array I Given a sorted array, remove the dupl...
閱讀 2791·2021-11-22 14:45
閱讀 936·2021-10-15 09:41
閱讀 1098·2021-09-27 13:35
閱讀 3767·2021-09-09 11:56
閱讀 2659·2019-08-30 13:03
閱讀 3224·2019-08-29 16:32
閱讀 3332·2019-08-26 13:49
閱讀 806·2019-08-26 10:35