leetcode 80. Remove Duplicates from Sorted Array II
2016-09-27 15:26
274 查看
Follow up for “Remove Duplicates”:
What if duplicates are allowed at most twice?
For example,
Given sorted array nums = [1,1,1,2,2,3],
Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn’t matter what you leave beyond the new length.
就地修改一个有序数组 每个数字保留两个
比如 :
1 1 1 1 2 2 2 2 3 3
逻辑上应该返回1 1 2 2 3 3
但是因为是就地修改 不是新建一个数字存储结果
所以实际上是 :
上面是逻辑的图
其实是在同一个数组里修改 会覆盖的
也就是一个指针遍历箭头的始点
另一个指针遍历箭头的终点
始点如果看到当前值已经有两个了 就不画箭头 最终始点到头 了
数组变成了1122332233 后面4个没有被覆盖
函数返回6 这样就可以在原数组截取前6位得到结果
What if duplicates are allowed at most twice?
For example,
Given sorted array nums = [1,1,1,2,2,3],
Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn’t matter what you leave beyond the new length.
public int removeDuplicates(int[] nums) { int value = Integer.MIN_VALUE; int count = 0; int index = 0; for(int i = 0; i < nums.length;i++){ if(nums[i] != value){ value = nums[i]; count = 1; nums[index++] = nums[i]; } else{ if(count == 1){ nums[index++] = nums[i]; count++; } else{ count ++; } } } return index; }
就地修改一个有序数组 每个数字保留两个
比如 :
1 1 1 1 2 2 2 2 3 3
逻辑上应该返回1 1 2 2 3 3
但是因为是就地修改 不是新建一个数字存储结果
所以实际上是 :
上面是逻辑的图
其实是在同一个数组里修改 会覆盖的
也就是一个指针遍历箭头的始点
另一个指针遍历箭头的终点
始点如果看到当前值已经有两个了 就不画箭头 最终始点到头 了
数组变成了1122332233 后面4个没有被覆盖
函数返回6 这样就可以在原数组截取前6位得到结果
相关文章推荐
- MATLAB 自带 神经网络工具包
- navicat破解
- 怎么直接将pdf转换成ppt格式
- 格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
- java自定义异常笔记
- Spring Security(06)——AuthenticationProvider
- 扩展欧几里得算法学习笔记
- mysql_connect()函数使用报错
- JDK代码中的优化 之 “avoid getfield opcode”
- mysql水平拆分与垂直拆分的详细介绍(转载http://www.cnblogs.com/nixi8/p/4524082.html)
- windows远程桌面如果超出最大连接数, 使用命令行mstsc /console登录即可
- mac整站下载工具httrack
- [Hbase] Hbase shell 操作数据
- unity5 通过 WWW 加载 Assetbundle 中的 texture
- mysql 备份与恢复mysqldump命令使用记录并做成脚本自动备份
- 如何使用office2016发布CSDN博客
- window对象
- JS点击某个图标或按钮弹出文件选择框的实现代码
- Java中RandomAcessFile类基本使用详解
- Codeforces-712B-Memory and Trident