演算法之刪除排序陣列中的重複項
阿新 • • 發佈:2018-12-19
題目:給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。
解答:
class Solution { public: int removeDuplicates(vector<int>& nums) { int i=1;//計數器 for(int j=1;nums[j] < nums.size();j++) //大迴圈 { if(nums[j]!=nums[j-1]) { nums[i]=nums[j]; i++; } } nums.erase(nums.begin()+i,nums.begin()+nums.size()); return nums.size(); } };
vs上實現:
// practice.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。 #include "pch.h" #include <iostream> #include <vector> #include <cmath> using namespace std; int main() { int n; //陣列長度 cin >> n; vector<int> nums(n); int i = 1;//計數器 for (int l = 0; l < n; l++) cin >> nums[l]; for (int j = 1; j < n; j++) //大迴圈 { if (nums[j] != nums[j - 1]) { nums[i] = nums[j]; i++; } } nums.erase(nums.begin() + i, nums.begin() + nums.size()); for(int k=0;k<i;k++) cout << nums[k]<<endl; cout << "個數:" <<i<< endl; }
注意點: 1、長度函式
- length()函式 c++中,length()只是用來獲取字串的長度。 例如:string str = “asdfghjkl” ,則,str.length() = 9。
- size()函式 c++中,在獲取字串長度時,size()函式與length()函式作用相同。 size()函式還可以獲取vector型別的長度。 例如:vector < int> num(15,2) , 則,num.size() = 15。
- sizeof()運算子 sizeof()運算子用來求物件所佔記憶體空間的大小。一般主要用在char上面!不要瞎用謝謝自己。
2.vector容器,明天整理一下這塊內容。
今天的排名是29萬。 感謝我的朋友們對我的指點。