菏澤 兼職做網(wǎng)站什么是百度競價排名服務(wù)
鏈接直達:
保留重復(fù)元素
不保留重復(fù)元素
題目:
1:
給定一個已排序的鏈表的頭 head , 刪除所有重復(fù)的元素,使每個元素只出現(xiàn)一次 。返回 已排序的鏈表 。示例 1:輸入:head = [1,1,2]
輸出:[1,2]
示例 2:輸入:head = [1,1,2,3,3]
輸出:[1,2,3]提示:鏈表中節(jié)點數(shù)目在范圍 [0, 300] 內(nèi)
-100 <= Node.val <= 100
題目數(shù)據(jù)保證鏈表已經(jīng)按升序 排列
2:
給定一個已排序的鏈表的頭 head , 刪除原始鏈表中所有重復(fù)數(shù)字的節(jié)點,只留下不同的數(shù)字 。返回 已排序的鏈表 。示例 1:輸入:head = [1,2,3,3,4,4,5]
輸出:[1,2,5]
示例 2:輸入:head = [1,1,1,2,3]
輸出:[2,3]提示:鏈表中節(jié)點數(shù)目在范圍 [0, 300] 內(nèi)
-100 <= Node.val <= 100
題目數(shù)據(jù)保證鏈表已經(jīng)按升序 排列
1題解:
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode deleteDuplicates(ListNode head) {if (head == null || head.next == null) {return head;}ListNode dummy = new ListNode(0);dummy.next = head;ListNode prev = dummy;ListNode curr = head;while (curr != null) {// 找到當前值與下一個值不同的節(jié)點while (curr.next != null && curr.val == curr.next.val) {curr = curr.next;}prev.next=curr;prev=prev.next;curr = curr.next;}return dummy.next;}
}
2題解:
class Solution {public ListNode deleteDuplicates(ListNode head) {if (head == null || head.next == null) {return head;}ListNode dummy = new ListNode(0);dummy.next = head;ListNode prev = dummy;ListNode curr = head;while (curr != null) {// 找到當前值與下一個值不同的節(jié)點while (curr.next != null && curr.val == curr.next.val) {curr = curr.next;}// 如果當前節(jié)點的下一個節(jié)點與當前節(jié)點的值不同,則將當前節(jié)點連接到previf (prev.next == curr) {prev = curr;} else {// 否則跳過所有重復(fù)的節(jié)點prev.next = curr.next;}curr = curr.next;}return dummy.next;}
}
至于具體兩者有什么區(qū)別呢,第一道算法題是保留了重復(fù)元素,也就是最后的結(jié)果是鏈表中每個出現(xiàn)的數(shù)據(jù)都是唯一的,而第二道算法題則是去掉了重復(fù)的數(shù)據(jù),只保留了只出現(xiàn)過一次的數(shù)據(jù)。
兩道題解的不同之處是:
第一道:
prev.next=curr;prev=prev.next;curr = curr.next;
第二道:
// 如果當前節(jié)點的下一個節(jié)點與當前節(jié)點的值不同,則將當前節(jié)點連接到previf (prev.next == curr) {prev = curr;} else {// 否則跳過所有重復(fù)的節(jié)點prev.next = curr.next;}
也就是第一道是prev的下一個節(jié)點直接指向了重復(fù)節(jié)點,而第二道則是如果判斷當前節(jié)點不唯一的話就直接指向了重復(fù)節(jié)點的下一個節(jié)點。
近日總結(jié):下下周考試,難受,還是建議預(yù)備大學生們,當你選擇的專業(yè)涉及到技術(shù),需要下載各種技術(shù)軟件的話,電腦系統(tǒng)還是選擇windows比較好,有不少技術(shù)軟件居然不支持mac。