LoginSignup
1
0

More than 1 year has passed since last update.

備忘録 LeetCode-83. Remove Duplicates from Sorted List

Posted at

はじめに

この記事はアルゴリズム振り返り用メモ.
言語化練習用に作成した記事です.

URL

Remove Duplicates from Sorted List

対象者

特になし

code

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        //アドレスをコピーする
        ListNode* copy = head;
        
        //現在の位置 && 次の位置が nullになるまで続ける
        while(copy != nullptr && copy->next != nullptr){
            //現在の位置 と 次の位置が一致している場合 
            //次の位置 を 次の次のnodeで上書きする
            if(copy->val == copy->next->val)copy->next = copy->next->next;
            //一致していない場合 次のnodeに更新する
            else copy = copy->next;
        }

        //アドレスを変更していたのでheadを返す
        return head;
    }
};

結果

Runtime: 17 ms, faster than 50.06% of C++ online submissions for Remove Duplicates from Sorted List.
Memory Usage: 11.5 MB, less than 97.36% of C++ online submissions for Remove Duplicates from Sorted Lis

詳細

headのアドレスをコピーする

現在の位置と次の位置のvalが一致している場合は
次のnodeを次の次のnodeに上書きする
というのを繰り返して連続した重複値を消去している。

headのアドレスをコピーして編集していたため
headが間接的に更新されるので
headを返す.

参照

動画

おわりに

今回の問題は前回のLeetCode-142. Linked List Cycle IIに比べて簡単に感じた

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0