题目要求:
跟进“删除重复数字”:
如果可以允许出现两次重复将如何处理?
思路:
之前忘记上一道题的题目要求了……其实给的是一个排序的数组,所以可以通过减少循环次数缩小时间复杂度,具体见代码。
代码:
class Solution {
public:
/**
* @param A: a list of integers
* @return : return an integer
*/
int removeDuplicates(vector<int> &nums) {
// write your code here
int i, j, count;
for(i = 0; i < nums.size(); i++){
count = 0;
for(j = i; j < nums.size() && nums[j] == nums[i]; j++){
count++;
if(count > 2){
nums.erase(nums.begin() + j);
j--;//j--是因为删除了一个j位置的节点,所以还是要从j位置继续循环。
}
}
i = j - 1;//如果不给j-1就赋给i,下一次循环i++,如果是最后一个就会直接退出外层循环了。
}
return nums.size();
}
};