zoukankan      html  css  js  c++  java
  • 力扣(LeetCode)试题26-删除排序数组中的重复项 C++代码

    回头看,解决一下以前的问题,发现几天前出现的问题好低级,代码还是要多练才可,以前停留在纸面上,太傻了

    算法:双指针,第一个指针 i 指向的位置待修改,第二个指针 j 用于遍历该数组

    若相邻元素值相同,第一个指针 i 不动,第二个指针 j 继续右移遍历,直到不再与 i 位置元素相同,此时将 j 位置上的元素,赋值给 i+1 位置上的元素,然后 i 右移一位。

     1 #include <iostream>
     2 #include <vector>
     3 
     4 using namespace std;
     5 
     6 class Solution {
     7 public:
     8     int removeDuplicates(vector<int>& nums) 
     9     {
    10         int val = nums.size();
    11         if (val == 0) return 0;
    12         else
    13         {
    14             int i = 0;//指向重复元素的第一个位置
    15             for (int j = 1; j < val; j++)//遍历nums
    16             {
    17                 if (nums[i] == nums[j])
    18                     continue;//j指向下个元素
    19                 else
    20                 {
    21                     nums[i + 1] = nums[j];
    22                     i += 1;
    23                 }
    24             }
    25             return i+1;
    26         }
    27     }
    28 };
    29 
    30 int main()
    31 {
    32     vector<int> nums = { 0, 0, 1, 1, 1, 2, 2, 3, 3, 4 };
    33     int length;
    34     Solution sol;
    35     length = sol.removeDuplicates(nums);
    36     cout << length << endl;;
    37     int n;
    38     for (int i = 0; i < length; i++)
    39     {
    40         cout << nums[i] << endl;
    41     }
    42     cin >> n;
    43     return 0;
    44 }

  • 相关阅读:
    高级查询及分页总结
    SQL编程
    线程同步
    创建和启动线程
    错题集04
    错题集03
    错题集02
    错题集
    新闻发布系统
    九大内置对象
  • 原文地址:https://www.cnblogs.com/pgzhanglin/p/13228737.html
Copyright © 2011-2022 走看看