1. 程式人生 > >Leetcode 刪除排序陣列中的重複項(c++)

Leetcode 刪除排序陣列中的重複項(c++)

給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。
例如:給定 nums = [0,0,1,1,1,2,2,3,3,4],

函式應該返回新的長度 5, 並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4。

你不需要考慮陣列中超出新長度後面的元素。

解:cnt記錄陣列中不同數字的個數,每次出現不同數字時,增加cnt,
並且用這個值取作為下標覆蓋掉原陣列中該下標的值

class Solution {
public:
int removeDuplicates(vector<int>& nums) { if(nums.empty()) //考慮空陣列的情況 return 0; int cnt=0; for (int i=0;i<nums.size();++i){ if(nums[i]!=nums[cnt]){ ++cnt; nums[cnt]=nums[i]; } } return
++cnt; } };