• leetCode #80 Remove Duplicates from Sorted Array II


    一个通过的解法如下:

    首先判断元素个数是否不少于2个,因为在这样的情况下,无论怎么样nums整个数组都是符合要求的,可以直接返回本身;

    对于一般的,首先,我们需要两个变量,一个用于记录被填补的个数cout,一个用于记录前一次的比较结果lastSame(初始化为false,符合策略需求),有如下策略

    如果 此次比较的 i 与 i-1 这两个元素相同:

        1. 如果上一次比较也是两个元素相同,说明当前的元素i至少是第3个相同的元素,我们可以计数了,即++count;

        2. 如果上一次比较是不同的两个元素,这意味着当前的元素i是第二个相同的元素,根据题目要求,这个元素是可以保留的,所以我们不能把它记录在内,而是把它往前移动count这么多个位置。另外lastSame需要更新为true。

    如果 此次比较的 i与 i-1 这两个元素不同,那就把这个元素往前挪count这么多个位置

     1 class Solution {
     2 public:
     3     int removeDuplicates(vector<int>& nums) {
     4         if (nums.size() < 3)
     5         {
     6             return nums.size();
     7         }
     8         
     9         int count = 0;
    10         bool lastSame = false;
    11         for (int i = 1; i < nums.size(); ++i)
    12         {
    13             if (nums[i] == nums[i-1])
    14             {
    15                 if (lastSame)
    16                 {
    17                     ++count;
    18                 }
    19                 else
    20                 {
    21                     lastSame = true;
    22                     if (count)
    23                     {
    24                         nums[i - count] = nums[i];
    25                     }
    26                 }
    27             }
    28             else
    29             {
    30                 if (count)
    31                 {
    32                     nums[i - count] = nums[i];
    33                 }
    34                 lastSame = false;
    35             }
    36         }
    37         
    38         return nums.size() - count;
    39         
    40     }
    41 };
  • 相关阅读:
    uni-app拒绝授权后再次授权
    vue触底操作
    vue滚动条滚到到底部触发的方法
    pagination插件使用例子
    修改后台返回数据的字段
    v-cloak指令的作用
    修改checkbox样式
    获取selected的值
    前端工程师必备的几个实用网站
    html发展史简介(摘抄)
  • 原文地址:https://www.cnblogs.com/xiaoyajiang/p/7843016.html
Copyright © 2020-2023  润新知