code第一部分数组:从有序数组中移除重复的数据
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第一部分数组:从有序数组中移除重复的数据相关推荐
- python不变的数据结构是_Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法...
本文实例讲述了Python从序列中移除重复项且保持元素间顺序不变的方法.分享给大家供大家参考,具体如下: 问题:从序列中移除重复的元素,但仍然保持剩下的元素顺序不变 解决方案: 1.如果序列中的值时可 ...
- python序列中各元素之间存在顺序关系_《Python Cookbook(第3版)中文版》——1.10 从序列中移除重复项且保持元素间顺序不变-阿里云开发者社区...
本节书摘来自异步社区<Python Cookbook(第3版)中文版>一书中的第1章,第1.10节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节 ...
- 22、在有序数组中插入一个数值,数组仍然有序——数组
插入数据,有序数组仍然有序 方法一: 在一个数组中完成的操作 代码实现: /*2017年6月19日16:31:52功能:向有序的数组中插入一个数据,但是数据仍然有序 */ #include<st ...
- 【数组】 - 有序数组设计
2019独角兽企业重金招聘Python工程师标准>>> 有序数组:数组存储有序的元素 不足:暂不考虑重复数组元素的问题 思路:通过代理模式,代理Java已实现的数组对象,实现有序数组 ...
- 数组(有序数组)的公共部分
https://blog.csdn.net/napoay/article/details/79195162 1. 双指针 如果数组无序,可先进行排序: 仅统计次数: def array_interse ...
- java list 不重复添加数据_Java--如何高效向List中存放不重复的数据(附带时间测试)...
set不允许出现重复的值(key) List是不能存储重复数据的,而我们想利用List存储不重复的元素,一般都使用List自带的contains方法对元素进行判断,如果不包含再进行添加,但是这样太耗时 ...
- 【Excel学习笔记】Excel中如何禁止输入重复的数据
实现方法: 选中要实现效果的数据范围,点击 数据 - 数据验证 在弹出的验证设置窗口内,验证条件中 允许(A)下拉菜单选择"自定义",在下方公式内输入: COUNTIF(A:A,A ...
- 骑士智能科技M5310模块连接中移OneNet平台实现数据交互
一.实验目的 使用骑士智能科技M5310模块加USB转串口,连接到中移OneNet平台上,并实现温湿度数据交互 二.准备工作 硬件:骑士智能科技M5310模块 + 移动NB卡.USB转串口.天线 软件 ...
- 二分、数组-LeetCode378. 有序矩阵中第K小的元素
1.题目描述 https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/ 给定一个 n x n 矩阵,其中每行和 ...
最新文章
- 《经济学人》万字长文:DeepMind和谷歌的AI拉锯战
- 皮一皮:双11到底买了啥...
- 没有任何基础学编程从哪开始_没有编程基础的朋友,学Python还是C/C++好,看了这个就明白了...
- 使用C#开发ActiveX控件[Obsolete]
- HIVE时间戳错误unix_timestamp时间不同环境相差8小时
- linux php项目启动_Linux上实现Node.js项目自启动
- 【Cocos2d入门教程五】Cocos2d-x动作篇
- 第一章数据分析与挖掘概述
- centos安装守护进程工具supervisor
- 加权平均数的例子_加权平均数怎么算?举个具体的例子
- Linux系统的安装
- Mac使用系列之软件安装权限
- [翻译]Orchard如何工作
- 计算机翻译图片,如何将电脑图片中的文字翻译成英文
- 【windows密码查看】在windows系统中保存的windows凭据如何方便地查看?network_password_recovery
- ”你谁啊?“ ”我CPU啊,你刚才还看我呢。“
- JEXL动态计算表达式
- python 新式类 旧式类_Python新式类与经典类(旧式类)的区别
- yarn Integrity check failed ... computed integrity doesn‘t match our records
- 使用了却报错值没有使用_使用没有
热门文章
- POJ 3308 Paratroopers (对数转换+最小点权覆盖)
- C# ActiveX开发部署更新
- 技术研究院003---六种方式,教你在SpringBoot初始化时搞点事情!
- SpringCloud学习笔记027---SpringBoot集成MyBatis_实现多数据源_可以自定义数据库类型
- 云计算学习笔记002---云计算的理解及介绍,google云计算平台实现原理
- DOTNET零碎总结---VB.NET修改数据存在多个txtbox时,SQL语句的操作
- java中String类的用法
- 用js实现分页功能以及利用xml实现分页功能——数据岛
- python内存池机制,python基础—12python内存管理机制
- java 保存 设置_如何在菜单中保存设置