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;
    }
    
  • 相关阅读:
    Java精选笔记_JSP技术
    Java精选笔记_JavaBean
    Java精选笔记_JSP开发模型
    Java精选笔记_XML基础
    Git_多人协作
    Git_Feature分支
    Git_Bug分支
    Git_分支管理策略
    Git_解决冲突
    Git_创建与合并分支
  • 原文地址:https://www.cnblogs.com/coding365/p/12872211.html
Copyright © 2011-2022 走看看