[LeetCode] 26. Remove Duplicates from Sorted Array

题目链接:传送门

Description

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 by modifying the input array in-place with O(1) extra memory.

Example:

Given 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.

Solution

题意:

给定一个已排序的数组,去掉其中的重复元素,注意题目中的 in-place

in-place algorithm,通俗的理解就是算法输出结果覆盖算法的输入

思路:

理解 in-place 之后就比较简单了,直接做即可

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if (nums.empty())  return 0;
        int pos = 1, pre = nums[0];
        for (int i = 1; i < nums.size(); i++) {
            if (nums[i] != pre) {
                nums[pos++] = nums[i];
                pre = nums[i];
            }
        }
        return pos;
    }
};
posted @ 2018-02-20 02:12  酒晓语令  阅读(116)  评论(0编辑  收藏  举报