LeetCode 217 Contains Duplicate--python,java解法--set--简单

100 篇文章 3 订阅
55 篇文章 1 订阅

题目地址:Contains Duplicate - LeetCode


题目:
Given an array of integers, find if the array contains any duplicates.

Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

Example 1:

Input: [1,2,3,1]
Output: true

Example 2:

Input: [1,2,3,4]
Output: false

Example 3:

Input: [1,1,1,3,3,4,3,2,4,2]
Output: true

意思是给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

我的想法是先排序,再看是否有重复的。
Python3代码如下:

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        if len(nums)<2:
            return False
        nums.sort()
        for i in range(1,len(nums)):
            if nums[i]==nums[i-1]:
                return True
        return False

结果如下:

Runtime: 52 ms, faster than 50.12% of Python3 online submissions for Contains Duplicate.
Memory Usage: 16.4 MB, less than 82.20% of Python3 online submissions for Contains Duplicate.

看了别人的Solution后,我觉得也许用set更快:

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        nums2=set(nums)
        return  len(nums2)!=len(nums)

结果只用了44ms,快了11ms,但内存多占用了3M

Java代码如下:

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Set<Integer> set = new HashSet<>(nums.length);
    for (int x: nums) {
        set.add(x);
    }
        return set.size()!=nums.length;
    }
}

耗时只有8ms,但是内存占用了44M。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值