leetcode26
我的解法:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int before = 1;
int after = 1;
int flag = nums[0];
while(before<nums.size()){
if(nums[before]!=flag){
flag = nums[before];
nums[after++] = nums[before++];
}else{
before++;
}
}
return after;
}
};
performance:Beats 72.84% of users with C++
不是最好,感觉主要是没必要引入这个flag。可以直接把每个值都跟它前面的值进行比较,如果相同则舍弃,如果不同则保留。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int j = 1;
for(int i = 1; i < nums.size(); i++){
if(nums[i] != nums[i - 1]){
nums[j] = nums[i];
j++;
}
}
return j;
}
};