1

分享

26. Remove Duplicates from Sorted Array (C++)

26. Remove Duplicates from Sorted Array從排序數組中刪除重複項、LeetCode
【筆記】

vector

標頭檔
  

#include <vector>

初始化
  

std::vector<int> v;

v = {1,2,3,4,5};

大小
  

v.size()

增加元素(最後)
  

v.push_back();

減少元素(最後)
  

v.pop_back();


26. Remove Duplicates from Sorted Array

題目:給定一個順序排序的整數數組 nums ,就地刪除重複項,以便每個唯一元素只出現一次。 元素的相對順序應該保持不變。
要求:回傳"未重複的數組長度"、以及修改過的"nums"
備註:nums中"未重複的數組長度"以外的值不重要
例如:
  • Input : nums = [ 1,1,2 ]
  • Output : 2, nums = [ 1,2,_ ]

Code(重新定義一個vector)

重新定義一個vector,最後再存回原本的nums
  

#include <iostream>

#include <vector>

using namespace std;

int main(){

        std::vector<int> nums = {1,1,2,3,3};

        std::vector<int> nums_copy;

        int size = nums.size();

        //check nums != [];

        if(size != 0){

                nums_copy.push_back(nums[0]);

        }

// When encountering different numbers, nums_copy will push_back()

        for(int i=1; i<size; i++){

                if(nums[i]!=nums[i-1]){

                        nums_copy.push_back(nums[i]);

                }

        }

// Use nums_copy to modify nums

        for(int i=1; i<size; i++){

                if(i<nums_copy.size()){

                        nums[i] = nums_copy[i];

                }

                else{

                        nums.pop_back();

                }

        }

// print the result

        cout<<nums_copy.size()<<endl;

        cout<<"vector<int> nums"<<endl;

        for(int i=0; i<nums.size(); i++){

                cout<<nums[i]<<" ";

        }

}

Output

  

3

vector<int> nums

1 2 3

leetcode c語言 筆記

重新定義一個vector

  • Runtime: 4 ms, faster than 98.68% of C++ online submissions for Remove Duplicates from Sorted Array.
  • Memory Usage: 18.4 MB, less than 23.32% of C++ online submissions for Remove Duplicates from Sorted Array.

Code(交換數組)

這個我參考了以下網址,並改寫成C++版本:
26.[圖解]Remove Duplicates from Sorted Array | by 劉勇志 | Medium
  

#include <iostream>

#include <vector>

using namespace std;

int main(){

        std::vector<int> nums = {1,1,2,3,3};

        int size = nums.size();

        int x=0;

        int y=1;

        while(y<nums.size()){

                if(nums[x]==nums[y]){

                        y++;

                }

                else{

                        x++;

                        nums[x]=nums[y];

                        y++;

                }

        }

// print the result

        cout<<x+1<<endl;

        cout<<"vector<int> nums"<<endl;

        for(int i=0; i<x+1; i++){

                cout<<nums[i]<<" ";

        }

}

Output

  

3

vector<int> nums

1 2 3

leetcode c語言 筆記

交換數組


參考資料

[1]. Remove Duplicates from Sorted Array - LeetCode
[2]. 26.[圖解]Remove Duplicates from Sorted Array | by 劉勇志 | Medium
#leetcode  #c語言  #筆記 
分類:學習

【關鍵字】:新手教學、Leetcode ; 【分類】:學習、理財。(目前C++新手教學第二章內容已完結)。建議或意見可私訊:https://reurl.cc/ze7L9k。文章有錯誤的地方還請留言指正,謝謝各位

評論
上一篇
  • 21. Merge Two Sorted Lists (C++)
  • 下一篇
  • 投資景氣查詢
  • 更多文章
    載入中... 沒有更多了