1. 程式人生 > >LeetCode217:Contains Duplicate

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