code第一部分数组:从有序数组中移除重复的数据

第二题 从有序数组中移除重复的数据,但是可以保留2个重复的数。
For example, Given sorted array A = [1,1,1,2,2,3],
Your function should return length = 5, and A is now [1,1,2,2,3]

解决方法1:和上面一题很类似,但是需要加上一个计数器;
解决方法2:可以使用条件语句来判断:i>0&&i<n-1&&a[i]==a[i-1]&&a[i]==a[i+1];

源代码如下

#include <iostream>
using namespace std;int removeduplicate(int a[],int n)
{if (n==0){return 0;}int count=1;int index=0;for (int i = 1; i < n; i++){if (a[index]==a[i]){if (count<2){index++;a[index]=a[i];count++;}}else{index++;a[index]=a[i];count=1;}}return index+1;
}int removeduplicate2(int a[],int n)
{if (n==0){return 0;}int index=0;int i;for (i = 0; i < n; i++){if (i>0&&i<n-1&&a[i]==a[i-1]&&a[i]==a[i+1]){continue;}a[index]=a[i];index++;}return index;}

拓展
从无序数组中移除重复的数据,但是可以保留2个重复的数。

分析,因为是无序的,如果没有时间复杂度的要求,可以先排序,比如快排O(nlogn)时间复杂度;
但是如果有要求,可以使用hashmap来记录出现的次数,时间复杂度为O(N),空间复杂度也为O(N);

解决方案1:先排序,再去重;
解决方案2:使用hash表;

方案一源代码
时间复杂度O(nlogn),空间复杂度O(1);

#include <iostream>
#include <algorithm>using namespace std;int removeduplicate(int a[],int n)
{sort(a,a+n);if (n==0){return 0;}int count=1;int index=0;for (int i = 1; i < n; i++){if (a[index]==a[i]){if (count<2){index++;a[index]=a[i];count++;}}else{index++;a[index]=a[i];count=1;}}return index+1;
}int removeduplicate2(int a[],int n)
{sort(a,a+n);if (n==0){return 0;}int index=0;int i;for (i = 0; i < n; i++){if (i>0&&i<n-1&&a[i]==a[i-1]&&a[i]==a[i+1]){continue;}a[index]=a[i];index++;}return index;}int main()
{int a[6]={1,2,1,2,1,3};int ans=removeduplicate(a,6);cout<<ans<<endl;int b[6]={1,2,1,2,1,3};int ans1=removeduplicate2(b,6);cout<<ans1<<endl;return 0;
}

方案2源代码

#include <iostream>#include <map>
using namespace std;/*typedef std::map<int,int> MAP;
MAP my_map;*/
map<int,int> my_map;
int removeduplicate(int a[],int n)
{int i;int index=0;for (i = 0; i < n; i++){if (my_map[a[i]]<2){my_map[a[i]]++;a[index++]=a[i];}elsecontinue;}return index;
}int main()
{int a[6]={1,2,1,2,1,3};int ans=removeduplicate(a,6);cout<<ans<<endl;return 0;
}

测试通过!

转载于:https://www.cnblogs.com/tao-alex/p/6442982.html

code第一部分数组:从有序数组中移除重复的数据相关推荐

  1. python不变的数据结构是_Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法...

    本文实例讲述了Python从序列中移除重复项且保持元素间顺序不变的方法.分享给大家供大家参考,具体如下: 问题:从序列中移除重复的元素,但仍然保持剩下的元素顺序不变 解决方案: 1.如果序列中的值时可 ...

  2. python序列中各元素之间存在顺序关系_《Python Cookbook(第3版)中文版》——1.10 从序列中移除重复项且保持元素间顺序不变-阿里云开发者社区...

    本节书摘来自异步社区<Python Cookbook(第3版)中文版>一书中的第1章,第1.10节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节 ...

  3. 22、在有序数组中插入一个数值,数组仍然有序——数组

    插入数据,有序数组仍然有序 方法一: 在一个数组中完成的操作 代码实现: /*2017年6月19日16:31:52功能:向有序的数组中插入一个数据,但是数据仍然有序 */ #include<st ...

  4. 【数组】 - 有序数组设计

    2019独角兽企业重金招聘Python工程师标准>>> 有序数组:数组存储有序的元素 不足:暂不考虑重复数组元素的问题 思路:通过代理模式,代理Java已实现的数组对象,实现有序数组 ...

  5. 数组(有序数组)的公共部分

    https://blog.csdn.net/napoay/article/details/79195162 1. 双指针 如果数组无序,可先进行排序: 仅统计次数: def array_interse ...

  6. java list 不重复添加数据_Java--如何高效向List中存放不重复的数据(附带时间测试)...

    set不允许出现重复的值(key) List是不能存储重复数据的,而我们想利用List存储不重复的元素,一般都使用List自带的contains方法对元素进行判断,如果不包含再进行添加,但是这样太耗时 ...

  7. 【Excel学习笔记】Excel中如何禁止输入重复的数据

    实现方法: 选中要实现效果的数据范围,点击 数据 - 数据验证 在弹出的验证设置窗口内,验证条件中 允许(A)下拉菜单选择"自定义",在下方公式内输入: COUNTIF(A:A,A ...

  8. 骑士智能科技M5310模块连接中移OneNet平台实现数据交互

    一.实验目的 使用骑士智能科技M5310模块加USB转串口,连接到中移OneNet平台上,并实现温湿度数据交互 二.准备工作 硬件:骑士智能科技M5310模块 + 移动NB卡.USB转串口.天线 软件 ...

  9. 二分、数组-LeetCode378. 有序矩阵中第K小的元素

    1.题目描述 https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/ 给定一个 n x n 矩阵,其中每行和 ...

最新文章

  1. 《经济学人》万字长文:DeepMind和谷歌的AI拉锯战
  2. 皮一皮:双11到底买了啥...
  3. 没有任何基础学编程从哪开始_没有编程基础的朋友,学Python还是C/C++好,看了这个就明白了...
  4. 使用C#开发ActiveX控件[Obsolete]
  5. HIVE时间戳错误unix_timestamp时间不同环境相差8小时
  6. linux php项目启动_Linux上实现Node.js项目自启动
  7. 【Cocos2d入门教程五】Cocos2d-x动作篇
  8. 第一章数据分析与挖掘概述
  9. centos安装守护进程工具supervisor
  10. 加权平均数的例子_加权平均数怎么算?举个具体的例子
  11. Linux系统的安装
  12. Mac使用系列之软件安装权限
  13. [翻译]Orchard如何工作
  14. 计算机翻译图片,如何将电脑图片中的文字翻译成英文
  15. 【windows密码查看】在windows系统中保存的windows凭据如何方便地查看?network_password_recovery
  16. ”你谁啊?“ ”我CPU啊,你刚才还看我呢。“
  17. JEXL动态计算表达式
  18. python 新式类 旧式类_Python新式类与经典类(旧式类)的区别
  19. yarn Integrity check failed ... computed integrity doesn‘t match our records
  20. 使用了却报错值没有使用_使用没有

热门文章

  1. POJ 3308 Paratroopers (对数转换+最小点权覆盖)
  2. C# ActiveX开发部署更新
  3. 技术研究院003---六种方式,教你在SpringBoot初始化时搞点事情!
  4. SpringCloud学习笔记027---SpringBoot集成MyBatis_实现多数据源_可以自定义数据库类型
  5. 云计算学习笔记002---云计算的理解及介绍,google云计算平台实现原理
  6. DOTNET零碎总结---VB.NET修改数据存在多个txtbox时,SQL语句的操作
  7. java中String类的用法
  8. 用js实现分页功能以及利用xml实现分页功能——数据岛
  9. python内存池机制,python基础—12python内存管理机制
  10. java 保存 设置_如何在菜单中保存设置