LeetCode Remove Duplicates from Sorted Array II
2016-01-25 09:37
302 查看
LeetCode解题之Remove Duplicates from Sorted Array II
原题
在 Remove Duplicates from Sorted Array(从一个有序的数组中去除重复的数字,返回处理后的数组长度) 的基础上,可以使每个数字最多重复一次,也就是说如果某一个数字的个数大于等于2个,结果中应保留2个该数字。注意点:
只能用常量的额外空间
将要保留的数字移到数组前部,剩余的部分不需要处理
例子:
输入: nums = [1,1,1,2,2,3]
输出: 5 ([1,1,2,2,3,3])
解题思路
首先记住原数组是有序的,再看一下以下几种情况:[1,1]
[1,1,2]
[1,1,2,2]
[1,1,2,2,3]
在每一次插入过程中,其实只要把要插入的元素和倒数第二个元素进行比较,如果相同,就忽略,因为倒数第一个数是夹在它们中间的,如果它们相等,那么就会有三个数相等;如果不同,就可以插入,因为在这样的情况下,最多只有倒数第二、倒数第一两个数相等。
AC源码
[code]class Solution(object): def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ count = 0 for i in range(len(nums)): if count < 2 or nums[count - 2] != nums[i]: nums[count] = nums[i] count += 1 return count if __name__ == "__main__": l = [1, 1, 1, 2, 2, 3] r = Solution().removeDuplicates(l) assert l == [1, 1, 2, 2, 3, 3] assert r == 5
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
相关文章推荐
- The most common (worst) passwords of 201
- HttpContext.Current.Session.SessionID相关问题及备忘
- C#:使用WebRequest类请求数据
- Xcode下的DerivedData文件
- 详解 ASP.NET异步
- iOS 整理iOS9适配中出现的坑
- linux下修改环境变量问题
- 提高网站打开速度的7大秘籍---依据Yslow工具的优化【转】
- 配置apache和nginx的tomcat负载均衡
- 判断一个字符串中所有字符是否属于别一个字符串
- java提高篇-----详解java的四舍五入与保留位
- Linux系统的ssh密钥认证
- 【胡思乱想】许久不见,我来除除草
- 使用绑定式服务播放音乐
- OpenCV 2.4.9 +VS2010 开发环境配置(二)
- 《皮囊》读书笔记
- LabWindows/CVI线程操作
- 关于MySQL数据导出导入的文章
- LightOJ1316 A Wedding Party(状压DP)
- JAVA设计模式之单例模式