LintCode(101)删除排序数组中的重复数字 II
2016-05-31 20:24
281 查看
题目
跟进“删除重复数字”:如果可以允许出现两次重复将如何处理?
您在真实的面试中是否遇到过这个题?
Yes
样例
给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]。
分析
与上题思路相同,只需要增加一个记录元素出现次数的变量即可,限制最多出现2次。Python代码
class Solution: """ @param A: a list of integers @return an integer """ def removeDuplicates(self, A): # write your code here if len(A) == 0: return 0 times = 1 k = 0 for i in range(1,len(A)): if A[i] != A[k]: k += 1 A[k] = A[i] times = 1 else: if times >= 2: continue else: k += 1 A[k] = A[i] times += 1 del A[k+1:len(A)] return len(A)
GitHub -- Python代码
C++代码
/* 101 删除排序数组中的重复数字 II 跟进“删除重复数字”: 如果可以允许出现两次重复将如何处理? 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]。 */ class Solution { public: /** * @param A: a list of integers * @return : return an integer */ int removeDuplicates(vector<int> &nums) { // write your code here if(nums.empty()) { return 0; }//if int n = nums.size(), k=0, times=1; for(int i=1; i<n; ++i) { if(nums[i] != nums[k]) { nums[++k] = nums[i]; times = 1; }else if(nums[i] == nums[k]){ if(times >= 2) { continue; }else{ nums[++k] = nums[i]; ++times; }//else }//elif }//for nums.resize(k+1); return k+1; } };GitHub -- C++代码
相关文章推荐
- Android中解析XML
- Awesome Delphi
- 非常实用的Android Studio快捷键
- Middle-题目129:337. House Robber III(增补1)
- javascript-第一节-js基础语法
- ATM取款机数据库设计
- Java设计模式学习笔记摘要
- 【leetcode】Move Zeroes
- 关于Cocos2d-x的瓦片地图
- 并查集压缩路径
- MFC中获取主窗口指针
- 谭浩强教授版《C程序设计》(第二版)P105 5.8企业发放的奖金根据利润提成(if)
- HTML5+CSS3-第六节(动画、视频、音频、canvas)
- Middle-题目128:166. Fraction to Recurring Decimal
- 简单代码,测试一下json.dump and json.loads
- 导数与微积分初步
- Java之eclipse的简单实用
- Java 集合类
- Middle-题目127:29. Divide Two Integers
- VS2010下Cannot find or open the PDB file