给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面的元素。
示例 2:给定 nums = [0,0,1,1,1,1,2,3,3],函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3 。你不需要考虑数组中超出新长度后面的元素。

我的做法:

public static int removeDuplicates2(int[] nums) {if (nums == null) {return 0;}int length = nums.length;if (length < 2) {return length;}int temp = 0, j = length - 1;/*** 整体思路是冒泡排序相同的* 第一层循环,循环每一个数字i,* 第二层循环,从当前数字i 往后循环每一个数字j,* 如果发现i和j相等了,那么把j,用第三层循环,把j循环挪动到末尾,* 同时,数组的长度减一*/for (int i = 0; i <= j; i++) {//遍历每一个数for (int k = i + 1,iCount =0; k <= j; ) {if (nums[i] == nums[k]) {iCount ++;}if (nums[i] == nums[k] && iCount >=2) {int m = k + 1;for (int q = k; m <= j; m++) {if (nums[q] != nums[m]) {temp = nums[q];nums[q] = nums[m];nums[m] = temp;q = m;}}j--;} else {k++;}}}return ++j;}

网上最快的做法(但是都有问题)

        /*** 下面是网上最快的解答,但是有问题,* 有的测试案例,返回的结果是不正确的。*         int [] testArray = new int[]{4,4,1,1,1,0,0,4,4,0};*/int i = 0;for (int num : nums) {if (i < 2 || num > nums[i - 2]) {nums[i++] = num;}}return i;

还有一个,也有问题:

        /*** 以下为网上解答*         int [] testArray = new int[]{4,4,1,1,1,0,0,4,4,0};这个测试用例通不过*/if(nums == null || nums.length == 0 ){return 0;}if(nums.length ==1 ){return 1;}int k =0;for(int i=0; i<nums.length; i++){if(k<2 || nums[i]!=nums[k-2] ){nums[k++] = nums[i];}}return k ;

加油,争取成为一个算法高手。

算法--------删除重复元素,但保留两个相关推荐

  1. leetcode初级算法-删除重复元素

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

  2. 《 Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素(去重)(8种方法)

    <  Python List列表全实例详解系列(四)> __列表删除元素(4种方法)删除重复元素(去重)(8种方法) 我的技术成长&学习资料整理分享之路 我遇到问题查找资料时,经常 ...

  3. jlu C删除重复元素

    题目编号:Exp04-Basic04,GJBook3-06-19 题目名称:删除重复元素 题目描述:编写函数,不使用其他辅助数组,把整型数组中重复元素删得只剩一个:所有未被删除元素都保留最先顺序移动到 ...

  4. sql删除重复的数据保留一条_leetcode题库-sql练习精讲系列--九、删除重复

    这是一个系列文章,这个系列的理念是通过一道题,搞懂一类题.涵盖了SQL面试最常考的知识点.搞懂这些题,面试时工作中sql不可能有问题. 文章分为引入问题-完整解析-答案-leetcode题和答案-知识 ...

  5. 顺序表删除重复元素(完整代码的实现)

    [问题描述] 设一顺序表有若干元素,编写程序实现删除表中值重复的元素,即重复元素只保留一个. [输入形式] 第一行输入一个N(N不大于100),表示顺序表的长度: 第二行输入N个整数,表示顺序表元素: ...

  6. 顺序表元素的多种删除方式——删除重复元素和删除掉所有相同元素

    大家好,初来乍到请多关照~ 最近老师给留的编程作业里有一道题让我相当困惑:题目是这个样子的: 任务描述 本关任务: (1)使用将顺序表L中值为x的数据元素替换为y: (2)此处假设线性表中的元素用于表 ...

  7. 字符串:字符串顺序比较、11-2删除重复元素、字符串生成器、着急的WYF(不同子串个数)

    字符串顺序比较 问题描述比较两个字符串s1和s2,输出:0表示s1与s2相等:1表示s1的字母序先于s2:-1表示s1的字母序后于s2输入格式输入两行,第一行输入一个字符串1,第二行输入字符串2.输出 ...

  8. mysql删除重复数据只保留一条_mysql查找删除重复数据并只保留一条实例详解

    有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 ...

  9. MySQL删除重复数据只保留最新的一条

    MySQL删除重复数据并保留最新的一条,网上有些博客写的有问题,因为他们只考虑到或者说他们的重复数据最多只有两条,当重复数据大于2时,就会出现问题. 案例描述: 按天删除表中重复数据只保留最新的一条( ...

最新文章

  1. SVM进行手写数字识别
  2. Jenkins与SVN持续集成
  3. 通过MyBatis查找一张表的数据,某些字段的值为空
  4. RT-Thread uart串口设备驱动代码结构剖析
  5. datatables每页显示数据刷新后不变_2019北京积分落户名单数据的一些分析
  6. 实战项目| 7天掌握神经网络预测模型
  7. 与smart_近视激光手术之smart篇
  8. Linux项目第一次访问非常慢,后来很快的异常
  9. 软件测试的目标及组织测试过程
  10. codeblocks13.12汉化
  11. jmeter常用操作说明
  12. Android安卓自带的 WebView 浏览器内核更新
  13. python 绘制太阳花
  14. Word中页眉文字下横线如何变化粗细线型,页脚文字上方如何添加横
  15. Windows锁屏图片文件存放位置
  16. DIY手机万能红外遥控器
  17. c++判断某一天是这一年的第几天
  18. golang-math实用小技巧
  19. android adc,Android配置ADC接口
  20. DMSP/OLS夜间灯光数据——应用

热门文章

  1. 2019年黑龙江省计算机等级考试,2019年的下半年黑龙江省计算机等级考试报名工作即将开始...
  2. mac 命令行 解压7z文件_Mac 有哪些好用的压缩软件?
  3. python和c运行速度的对比实验_Python中单线程、多线程和多进程的效率对比实验...
  4. 三星自动驾驶汽车路测获批,进军无人驾驶领域
  5. Spring源码系列:BeanDefinition源码解析
  6. Redis持久化实践及数据恢复
  7. 代码和XIB结合开发
  8. IronPython2.7 C# 4.0 互调用备忘
  9. 被国人误解了千年的七句话之相濡以沫
  10. 近期要推出的ISA2006系列文章