zoukankan      html  css  js  c++  java
  • 【力扣】删除排序数组中的重复项 多语言题解

    1、C++
    思路:
    用双指针就可以
    为了再次节省空间,size==0直接退出

    class Solution {
    public:
        int removeDuplicates(vector<int>& nums)
        {
            if (nums.size() == 0) 
                return 0; //又是这种情况
            int i = 0, j = 0;
            while (j < nums.size())
            {
                if (nums[i] != nums[j])
                    nums[++i] = nums[j];
                j++;
            }
            return i + 1;
        }
    };
    

    执行用时 :40 ms, 在所有 Python3 提交中击败了95.81%的用户

    内存消耗 :15 MB, 在所有 Python3 提交中击败了8.16%的用户

    2、Python
    思路:
    用集合的思路,去重
    但是速度满了点

    class Solution:
        def removeDuplicates(self, nums: List[int]) -> int:
            nus = sorted(list(set(nums)))
            for i in range(len(nus)):
                nums[i] = nus[i]
            return len(nus)
    

    执行用时 :40 ms, 在所有 Python3 提交中击败了95.81%的用户

    内存消耗 :15 MB, 在所有 Python3 提交中击败了8.16%的用户

    3、Java
    思路:
    还是用双指针法,同样原理

    public int removeDuplicates(int[] nums) {
        if (nums.length == 0) return 0;
        int i = 0;
        for (int j = 1; j < nums.length; j++) {
            if (nums[j] != nums[i]) {
                i++;
                nums[i] = nums[j];
            }
        }
        return i + 1;
    }
    
  • 相关阅读:
    树状数组
    线段树
    最短路(FLOYD)
    欧拉函数
    筛素数
    并查集
    背包方案数问题(礼物)
    [BeijingWc2008]雷涛的小猫
    受欢迎的牛[HAOI2006]
    删除物品[JLOI2013]
  • 原文地址:https://www.cnblogs.com/coding365/p/12872211.html
Copyright © 2011-2022 走看看