LeetCode217:Contains Duplicate

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

LeetCode:链接

这道题有三种解法:

(1) 固定一个数,然后遍历后面的数寻找有没有重复的,时间复杂度是O(n2),空间复杂度是O(1);

(2)快排,如果有重复的数肯定挨着的两个数相等,时间复杂度是O(nlogn),空间复杂度可以视作是O(1);

(3)哈希表,没有就加进去,如果有重复的就退出,时间复杂度是O(n),空间复杂度是O(n),直接用列表判断貌似不行,会超时。

在判断的时候,最好先判断结果,然后再判断非结果,这样速度会快一点。

if each in result.keys()或者if each in result在本地都可以,但是LeetCode只支持if each in result。

class Solution(object):
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        result = {}
        for each in nums:
            if each in result:
                return True
            else:
                result[each] = 1
        return False

猜你喜欢

转载自blog.csdn.net/mengmengdajuanjuan/article/details/83856799
今日推荐