Remove Duplicates from Sorted Array

原题链接Remove Duplicates from Sorted Array

给定一个有序数组,对于数组中的重复项,只需要保留一个,其余的都删掉

和每天一道LeetCode—–移除有序链表中的重复节点类似

只需要记录当前找到的元素,当再遍历到一个元素时,如果和之前找到的元素一样,就丢掉

代码如下

class Solution {
public:int removeDuplicates(vector<int>& nums) {int prev = 0;for(auto& n : nums){/* prev - 1是上一个找到的元素,如果和它相等,就丢掉 */if(prev == 0 || n != nums[prev - 1])nums[prev++] = n;}return prev;}
};

Remove Duplicates from Sorted Array II

原题链接Remove Duplicates from Sorted Array II

允许保留两个重复元素

令prev指向下一个元素应该存放的位置,初始为0,假设当前遍历到一个元素,那么它前面两个位置分别是prev - 1和prev - 2

考虑nums[prev-2],如果当前遍历到的元素和nums[prev-2]相等,说明是第三个重复元素,应该丢掉。如果当前遍历到的元素大于nums[prev-2](因为递增),那么就可以将其添加到结果中

代码如下

class Solution {
public:int removeDuplicates(vector<int>& nums) {int prev = 0;for(auto& n : nums){/* 开始两个可以添加,后面的需要和它前面两个比较 */if(prev < 2 || n > nums[prev-2])nums[prev++] = n;}return prev;}
};

这两道题主要需要想到如果判断当前遍历到的元素是否满足条件,对于只保留一个的,那么和nums[prev-1]比较即可,对于保留两个的,那么只需要和nums[prev-2]比较。因为prev指向的是当前遍历到的元素应该插入的位置,所以nums[prev-1]和nums[prev-2]分别表示它之前的元素和之前的之前的元素:)

每天一道LeetCode-----从有序数组中删除重复元素相关推荐

  1. 力扣 26.删除有序数组中的重复元素

    文章目录 题目 思路 AC代码 收获 题目 删除有序数组中的重复元素 思路 快慢指针.快指针不断向前走.判断快指针所指的数与快指针前面的数是否相等,如果相等就说明是重复的,要继续向后移动,如果不相等, ...

  2. LeetCode 540. 有序数组中的单一元素(Single Element in a Sorted Array) 42

    540. 有序数组中的单一元素 540. Single Element in a Sorted Array 题目描述 每日一算法2019/6/14Day 42LeetCode540. Single E ...

  3. LeetCode 540. 有序数组中的单一元素(c语言实现)

    540. 有序数组中的单一元素 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次. 请你找出并返回只出现一次的那个数. 你设计的解决方案必须满足 O(log n) 时间 ...

  4. leetcode 从排序数组中删除重复项(C++)

    从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间 ...

  5. java删除有序数组中的重复元素_java去除已排序数组中的重复元素

    题目描述 给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度. 要求: 不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作. 例如: 给出数组A=[1, ...

  6. java删除有序数组中的重复元素_算法刷刷刷Leetcode第26题删除排序数组中的重复项...

    给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成.示例 ...

  7. LeetCode 1060. 有序数组中的缺失元素(二分查找)

    文章目录 1. 题目 2. 解题 2.1 一次遍历 2.2 二分查找 1. 题目 给出一个有序数组 A,数组中的每个数字都是 独一无二的,找出从数组最左边开始的第 K 个缺失数字. 示例 1: 输入: ...

  8. LeetCode 540. 有序数组中的单一元素(位运算二分查找)

    1. 题目 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2示例 2: 输入: [3,3 ...

  9. LeetCode 540 有序数组中的单一元素

    题目描述 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这 个数. 题解 二分查找 代码 class Solution { public:int singleNonD ...

最新文章

  1. lpi linux认证权威指南 pdf,LPI Linux认证指南读书笔记
  2. class不生效 weblogic_weblogic配置Log4j不生效的问题
  3. 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊
  4. php获取post表单数据_PHP获取POST表单数据
  5. python实现rsa加密源代码_python实现RSA加密(解密)算法
  6. 【C++ 学习笔记】 MFC CEdit
  7. 大三、研二的秋招备战路线(Java、大数据)
  8. 比较两个数组,输出不重复的数组
  9. 如何从开发小白到音视频专家
  10. Tablestore Timestream:为海量时序数据存储设计的全新数据模型...
  11. 前端开发人员需知——浏览器详解
  12. HTML5+学习笔记2-------边看代码边研究貌似还是有点问题...还在研究中api中
  13. GAE研究小组:面向对象与面向过程的工程化理解
  14. mysql自动断开该连接解决方案
  15. Log对象什么时候会更新LEO
  16. 【翻译】Windows下文件的命名
  17. 宽带连接不上,拨号宽带连接的创建。
  18. c语言实训项目,C语言项目实训教程
  19. 基金投资入门与技巧——阅读笔记
  20. 高端玩家的运营与维护

热门文章

  1. AMD、CMD、CommonJS、ES6(import/export)
  2. Java黑皮书课后题第5章:*5.24(数列求和)编写程序,计算下面数列的和:1/3+3/5+5/7+7/9+……95/97+97/99
  3. 【数据结构】之算法和算法评价
  4. 你对一个程序员有多尊重
  5. iOS 网络输入流提供请求体(适用于大容量内容)
  6. 基于Session的国际化实现
  7. HTMl5的sessionStorage和localStorage
  8. hdu_1233(最小生成树)
  9. 编写高性能Web应用程序的10个技巧
  10. 发布与订阅消息--Redis学习笔记八