LeetCode 26. 删除排序数组中的重复项

题目描述

《LeetCode 26. 删除排序数组中的重复项》

题解

哈希表法

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int result = 0, i = 0;
        map<int, int>tmp;
        while(i != nums.size()) {
            if(tmp.count(nums[i]) != 0) {
                nums.erase(nums.begin() + i);
                continue;
            }
            tmp[nums[i]] = i;
            i++;
            result++;
        }

        return result;
    }
};

时间复杂度为《LeetCode 26. 删除排序数组中的重复项》,空间复杂度为《LeetCode 26. 删除排序数组中的重复项》

双指针法

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

时间复杂度为《LeetCode 26. 删除排序数组中的重复项》,空间复杂度为《LeetCode 26. 删除排序数组中的重复项》

    原文作者:SmallRookie
    原文地址: https://www.jianshu.com/p/f25fd7f0a675
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞