Remove Duplicates from Sorted Array
2016-03-18 11:31
288 查看
单词:
duplicate相同的数
Sort有序
Array数组
思路:
1.Allocate extra space for another array
2. Not allocate extra space for another array
duplicate相同的数
Sort有序
Array数组
思路:
1.Allocate extra space for another array
#include <iostream> #include <vector> using namespace std; class SortedArray { public: void Print(vector<int> &nums) { for(vector<int>::iterator it=nums.begin();it!=nums.end();it++) cout<<*it<<" "; } int RemoveDuplicates(vector<int> &src,vector<int> &dst) { if(src.empty()) return 0; int index=0; dst.push_back(src[index]); for(int i=1;i<src.size();i++) { if(src[index]!=src[i]){ index++; src[index]=src[i]; dst.push_back(src[index]); } } return index+1; } }; int main() { //创建两个vector容器 vector<int> src; vector<int> dst; //vector容器初始化 src.push_back(1); src.push_back(1); src.push_back(1); src.push_back(1); src.push_back(2); src.push_back(2); src.push_back(2); src.push_back(2); src.push_back(2); //创建类 SortedArray sortedArray; //实现 int cont=sortedArray.RemoveDuplicates(src,dst); cout<<cont<<endl; sortedArray.Print(dst); return 0; }
2. Not allocate extra space for another array
#include <iostream> #include <vector> #include <algorithm> using namespace std; class A { public: int Solution(int *a,int len) { if(len<0) return 0; int index=0; a[index]=a[0]; for(int i=1;i<len;i++) { if(a[index]!=a[i]) { index++; a[index]=a[i]; } } return index+1; } }; int main() { int a[10]={1,1,1,1,2,2,2,3,3,3}; A b; int len=b.Solution(a,10); for(int i=0;i<len;i++) cout<<a[i]<<" "; return 0; }