zoukankan      html  css  js  c++  java
  • [LeetCode]14. Remove Duplicates from Sorted Array排序数组去重

    Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

    Do not allocate extra space for another array, you must do this in place with constant memory.

    For example,
    Given input array nums = [1,1,2],

    Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.

    解法:因为数组是排序好的,所以只需判断相邻的两个元素是否相同就可以了。如果前后两个元素相同,则前进一步继续比较,否则将此元素复制到数组第一个重复元素的位置。

    class Solution {
    public:
        int removeDuplicates(vector<int>& nums) {
            int n = nums.size();
            if(n == 0)
                return 0;
            int i = 1, j = 1;
            for(; i < n;)
            {
                if(nums[i - 1] == nums[i])
                    i++;
                else
                    nums[j++] = nums[i++];
            }
            return j;
        }
    };

     若不需要in-place,则可以使用STL的map处理,或者设计Hash表处理。

  • 相关阅读:
    1048 石子归并
    高精度算法小结
    3117 高精度练习之乘法
    UVa 11809
    3115 高精度练习之减法
    3116 高精度练习之加法
    “da shen” in my heart
    爱是怀疑!
    普通disco
    崇拜
  • 原文地址:https://www.cnblogs.com/aprilcheny/p/4856895.html
Copyright © 2011-2022 走看看