*Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
For example, Given input array A = [1,1,2],
Your function should return length = 2, and A is now [1,2].
*ios
/* * 對一個已經有序的序列進行重複元素刪除 * 即保證序列中的元素是有序且惟一 */ class Solution { public: int removeDuplicatesFromSortedArray(vector<int>& nums) { //當序列爲空時 if(nums.empty()) return 0; //當序列非空時 int index = 0; for(int i = 1;i<nums.size();i++) { if(nums[i] != nums[index]) { index++; nums[index] = nums[i]; } } return index+1; } };
下面是測試代碼:app
#include<iostream> #include<vector> using namespace std; /* * 對一個已經有序的序列進行重複元素刪除 * 即保證序列中的元素是有序且惟一 */ class Solution { public: int removeDuplicatesFromSortedArray(vector<int>& nums) { //當序列爲空時 if(nums.empty()) return 0; //當序列非空時 int index = 0; for(int i = 1;i<nums.size();i++) { if(nums[i] != nums[index]) { index++; nums[index] = nums[i]; } } return index+1; } }; //主函數 int main(void) { vector<int> a; a.push_back(1); a.push_back(1); a.push_back(1); a.push_back(2); a.push_back(2); a.push_back(3); a.push_back(4); a.push_back(4); a.push_back(4); a.push_back(4); a.push_back(5); int index = a.size(); //在刪除重複元素以前 cout<<"before:"<<endl; for(int i = 0;i<index;i++) { cout<<a[i]<<" "; } cout<<endl; //刪除重複元素以後 Solution s; int return_num = s.removeDuplicatesFromSortedArray(a); cout<<"after:"<<endl; for(int i = 0;i<return_num;i++) { cout<<a[i]<<" "; } cout<<endl;