LintCode(100)删除排序数组中的重复数字
2016-05-31 20:10
323 查看
题目
给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。
分析
对排序数组去重,要求空间复杂度为O(1)遍历一次数组,将不重复元素保留,重复元素被覆盖,最后删除末尾剩余的元素即可。
Python代码
# #100 删除排序数组中的重复数字 # class Solution: """ @param A: a list of integers @return an integer """ def removeDuplicates(self, A): # write your code here k=0 for i in range(1,len(A)): if A[i] != A[k]: k+=1 A[k] = A[i] del A[k+1:len(A)] return len(A)
GitHub -- Python代码
C++代码
/* 100 删除排序数组中的重复数字 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。 */ 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; for(int i=1;i<n;++i) { if(nums[i] != nums[k]) { nums[++k] = nums[i]; }//if }//for nums.resize(k+1); return k+1; } };GitHub -- C++代码
相关文章推荐
- 第14周实践项目-数组类模板
- 二叉树中两个节点的最低公共祖先
- c++指针&指针数组&数组的指针 的测试
- 第二阶段工作总结05
- ECMAScript5 Date.now()
- 正确率、召回率和F值
- 记住Decode
- echo(),print(),print_r()的区别
- 集成环信实现聊天
- 关于vs2015+qt5.x+vtk的配置
- 步进电机———丢步
- 点击按两次返回键退出
- 基于用户类型调起不同类型浏览器窗口的一种方案
- Middle-题目118:210. Course Schedule II
- MyBatis里json型字段到Java类的映射
- 二叉排序树节点的删除(C++,算法导论),前中后序遍历(递归/非递归,栈实现),按层次遍历(队列实现)
- 大数据量报表导出相关的设置问题解决
- 空间分析相关接口(ITopologicalOperator,IRelationalOperator,IProximityOperator)
- 非二进制字符串数据:CHAR,VARCHAR,TEXT
- ZeroICE 3.5.1绑定地址错误