[LintCode]100.刪除排序陣列中的重複數字
阿新 • • 發佈:2019-01-26
給定一個排序陣列,在原陣列中刪除重複出現的數字,使得每個元素只出現一次,並且返回新的陣列的長度。
不要使用額外的陣列空間,必須在原地沒有額外空間的條件下完成。
樣例
給出陣列A =[1,1,2],你的函式應該返回長度2,此時A=[1,2]。
思路:對陣列遍歷一次,並設定一個計數器,每當遍歷前後元素不相同,計數器加1,並將當前遍歷的元素覆蓋到計數器對應在陣列中位置。遍歷完後,重新調整陣列長度大小。
vector.resize(n) 調整容器的長度大小,使其能容納n個元素。如果n小於容器的當前的size,則刪除多出來的元素。否則,新增採用值初始化的元素。
class Solution { public: /* * @param nums: An ineger array * @return: An integer */ int removeDuplicates(vector<int> &nums) { if(nums.empty()) return 0; int count=0; for(int i=1;i<nums.size();i++){ if(nums[i]!=nums[count]){ nums[++count]=nums[i]; } } nums.resize(count+1); return count+1; } };