NinaLabo

個人ゲーム開発者の技術メモ

【LeetCode】83. Remove Duplicates from Sorted List(Easy)

【最初に】

LeetCode 6個目に挑戦です

leetcode.com

 

 

【問題】

与えられたLinkedListから重複を排除せよ

Example 1:

Input: 1->1->2
Output: 1->2

Example 2:

Input: 1->1->2->3->3
Output: 1->2->3

 

【とりあえず】

ぱっと思いつくのは、前回の↓と同様にLinkedListをループで回して過去に調べた数字は可変長配列に保存しておき、重複した数字が出現した場合はnextを次の次のノードに書き換えるというもの。

ninagreen.hatenablog.com

 

f:id:ninagreen:20191110042015p:plain

 

できた!

f:id:ninagreen:20191110042043p:plain

 

【解答を見る】

どうやら問題のLinkedListはソートされている前提らしい。であれば、過去に調べた値をvectorに入れて比較せずとも、前の値と次の値を比較するだけで問題ない。

f:id:ninagreen:20191112020405p:plain

こちらのほうがvectorに値を保存しないので、空間計算量がO(n) → O(1) になる。
 

【最後に】

問題文の最初に"sorted"って書いてありました。

Given a sorted linked list, 

よく読まないと.. ですね