Problem: Given an integer array nums, return true if any value appears at least twicein the array, and return false if every element is distinct.
Solutions
Brute force
Just have two for loops and check for values.
- Time complexity:
- Space complexity:
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] == nums[j]:
return True
return FalseSorting
Sort the array; if there are any duplicated numbers in the list, return true.
- Time complexity: , sorting operation is bottleneck here
- Space complexity:
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
nums.sort()
for i in range(len(nums)-1):
if nums[i] == nums[i+1]:
return True
return FalseHashset
Use a hashset to check; if a number is already in the set, return True
- Time complexity:
- Space complexity:
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
hashset = set()
for n in nums:
if n in hashset:
return True
hashset.add(n)
return False