26. 刪除排序陣列中的重複項
阿新 • • 發佈:2018-12-09
題目
程式碼
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size()<=1) return nums.size(); int repeatNum=0;//重複的數字個數 int newNum=nums[0];//每次判斷用的新的數字 //迴圈將那些第一次遇到的不同的數字前移,如果是重複數字則+1 for(int i=1;i<nums.size();i++) { if(nums[i]==newNum) { repeatNum++; } else { newNum=nums[i]; nums[i-repeatNum]=nums[i]; } } return nums.size()-repeatNum; } };
思路
在一個迴圈中遍歷陣列,比如vec[1,1,2,2,3],迴圈從索引1開始,由於vec[1]和vec[0]相同,所以重複數字+1,第一次遇到2時就將2前移一個位置,當第二次遇到2時,重複次數再+1,當第一次遇到3時,就前移2個位置。最後前面3位數字為1,2,3。返回的長度為總長度減去重複次數。