删除有序数组中的重复项①

力扣
image.pngimage.png

使用快慢指针来解决

首先根据题目条件可以知道,数组是有序的,且要原地删除重复出现一次的元素 既然数组是有序的,那么我们不难想到这样判断元素是否重复
image.png

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. vector<int> nums = {0,0,1,1,1,2,2,3,3,4};
  5. int ans = 0;
  6. int n = nums.size();
  7. int i = 0, j = 1;
  8. while(j < n){
  9. if(nums[j] != nums[i]){
  10. nums[i+1] = nums[j];
  11. i++;
  12. }
  13. j++;
  14. }
  15. //
  16. for(int k = 0;k < i;k++){
  17. cout << nums[k] << " ";
  18. }
  19. system("pause");
  20. return 0;
  21. }

删除有序数组中重复项②

力扣
image.png
相比于①

  1. class Solution {
  2. public:
  3. int removeDuplicates(vector<int>& nums) {
  4. int n = nums.size();
  5. int l = 2,r = 2;
  6. if(n <=2){
  7. return n;
  8. }
  9. while(r < n){
  10. if(nums[l-2]!=nums[r]){
  11. nums[l] = nums[r];
  12. l++;
  13. }
  14. r++;
  15. }
  16. return l;
  17. }
  18. };

只出现一次的数字

力扣
image.png

寻找重复数

力扣
image.png