leetcode26:删除有序数组中的重复项
leetcode26:删除有序数组中的重复项
方案一:依次遍历,如果不符合条件则冒泡交换到最后一个位置。o(n^2),结果超时
#include <algorithm>
#include <iostream>using namespace std;
class Solution {
public:int removeDuplicates(vector<int>& nums) {if (nums.size() == 1) {return 1;}int dupNum = 0;int i = 1;int pre = nums[0];while (i < nums.size() - dupNum) {int now = nums[i];if (now == pre) {for (int j = i; j < nums.size() - dupNum - 1; j++) {std::swap(nums[j], nums[j+1]);}dupNum++;} else {i++;}pre = now;}return nums.size() - dupNum;}
};
方案二:迭代器遍历直接删除。通过✅
在这里插入代码片#include <algorithm>
#include <iostream>using namespace std;
class Solution {
public:int removeDuplicates(vector<int>& nums) {if (nums.size() == 1) {return 1;}vector<int>::iterator ite = nums.begin();int pre = *ite;ite++;while (ite != nums.end()) {int now = *ite;if (now == pre) {ite = nums.erase(ite);}else {ite++;}pre = now;}return nums.size();}
};