1. 程式人生 > 遊戲資訊 >閃耀暖暖:風箏、大熊、寶劍,疊紙鍾情於“大擺件”而無法自拔

閃耀暖暖:風箏、大熊、寶劍,疊紙鍾情於“大擺件”而無法自拔

思路:

意思就是把排序連結串列每個元素只留下一個,還要維持先後順序。

這種題,可以用set來儲存遍歷過的元素來降低程式碼編寫難度,但時空複雜度都是O(n)的。(程式碼一)

其實還可以用一個變數記住最後一個值是啥,來降低空間複雜度。空間O(1),時間O(n)。(程式碼二)

 

程式碼一:

 1 var deleteDuplicates = function(head) {
 2         let virtualHead = new ListNode(0, head), pre = virtualHead, cur = head;
 3         let memSet = new Set();
4 while(cur){ 5 if(memSet.has(cur.val)){ 6 pre.next = cur.next; 7 cur = cur.next; 8 }else{ 9 memSet.add(cur.val); 10 pre = pre.next; 11 cur = cur.next; 12 } 13 } 14
return virtualHead.next; 15 };

程式碼二:

 1 /**
 2      * @param {ListNode} head
 3      * @return {ListNode}
 4      */
 5     var deleteDuplicates = function(head) {
 6         let virtualHead = new ListNode(0, head), pre = virtualHead, cur = head;
 7         // 注意題中給出的資料範圍
 8         let mem = -101;
9 while(cur){ 10 if(cur.val === mem){ 11 pre.next = cur.next; 12 cur = cur.next; 13 }else{ 14 mem = cur.val; 15 pre = pre.next; 16 cur = cur.next; 17 } 18 } 19 return virtualHead.next; 20 };