删除有序数组中的重复项①
使用快慢指针来解决
首先根据题目条件可以知道,数组是有序的,且要原地删除重复出现一次的元素 既然数组是有序的,那么我们不难想到这样判断元素是否重复
#include <bits/stdc++.h>
using namespace std;
int main(){
vector<int> nums = {0,0,1,1,1,2,2,3,3,4};
int ans = 0;
int n = nums.size();
int i = 0, j = 1;
while(j < n){
if(nums[j] != nums[i]){
nums[i+1] = nums[j];
i++;
}
j++;
}
//
for(int k = 0;k < i;k++){
cout << nums[k] << " ";
}
system("pause");
return 0;
}
删除有序数组中重复项②
力扣
相比于①
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n = nums.size();
int l = 2,r = 2;
if(n <=2){
return n;
}
while(r < n){
if(nums[l-2]!=nums[r]){
nums[l] = nums[r];
l++;
}
r++;
}
return l;
}
};