LintCode(100)删除排序数组中的重复数字

原创 2016年05月31日 20:10:37

题目

给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。

不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。

样例

给出数组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++代码



版权声明:本文为博主原创文章,未经博主允许不得转载。

容易 删除排序数组中的重复数字

Remove Duplicates from Sorted Array -- LeetCode 分类: LeetCode2014-02-27 05:12 4789人阅读 评论(5) 收藏 举...
  • witnessai1
  • witnessai1
  • 2015年10月17日 17:57
  • 1170

删除排序数组中的重复数字

题目描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 样例:给出数组A =[1,1,2...
  • guoziqing506
  • guoziqing506
  • 2016年05月13日 15:38
  • 683

【LintCode】删除排序数组中的重复数字

删除排序数组中的重复数字  描述: 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的条件...
  • a417484830
  • a417484830
  • 2017年06月09日 21:11
  • 189

删除排序数组中的重复数字——LintCode

删除排序数组中的重复数字 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的...
  • fk5431
  • fk5431
  • 2015年12月10日 19:39
  • 1024

LintCode 删除排序数组中的重复数字 II

删除排序数组中的重复数字 II跟进删除排序数组中的重复数字: 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,...
  • shinanhualiu
  • shinanhualiu
  • 2015年10月03日 15:09
  • 1381

[LintCode]100.删除排序数组中的重复数字

给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 样例 给出数组A =[...
  • zwy1258432405
  • zwy1258432405
  • 2017年09月14日 12:05
  • 223

LintCode(101)删除排序数组中的重复数字 II

题目 跟进“删除重复数字”: 如果可以允许出现两次重复将如何处理? 您在真实的面试中是否遇到过这个题?  Yes 样例 给出数组A =[...
  • fly_yr
  • fly_yr
  • 2016年05月31日 20:24
  • 3841

计蒜客第22题---排序后的数组删除重复数字

给定升序排序的数组,如果数组有2个或2个以上相同的数字,去掉他们,直到剩下2个为止。 例如: 数组A[] = [1,1,1,2,2,3] 你的算法需要返回新数组的长度5, 此时A为[1,1,2...
  • dandelion1314
  • dandelion1314
  • 2015年07月22日 20:21
  • 716

删除排序数组中的重复元素(三种方法的比较)

题目描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。...
  • wu2304211
  • wu2304211
  • 2016年10月06日 14:25
  • 2080

lintcode-删除数字-182

给出一个字符串 A, 表示一个 n 位正整数, 删除其中 k 位数字, 使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数。 找到删除 k 个数字之后的最小正整数。 N k N ...
  • ljlstart
  • ljlstart
  • 2015年09月10日 14:15
  • 1219
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LintCode(100)删除排序数组中的重复数字
举报原因:
原因补充:

(最多只允许输入30个字)