Problem

Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.

https://leetcode.com/problems/contains-duplicate/

Example 1:

Input: nums = [1,2,3,1]
Output: true
Explanation:
The element 1 occurs at the indices 0 and 3.

Example 2:

Input: nums = [1,2,3,4]
Output: false
Explanation:
All elements are distinct.

Example 3:

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

Constraints:

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

Test Cases

1
2
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
solution_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pytest

from solution import Solution


@pytest.mark.parametrize('nums, expected', [
([1,2,3,1], True),
([1,2,3,4], False),
([1,1,1,3,3,4,3,2,4,2], True),
])
class Test:
def test_solution(self, nums, expected):
sol = Solution()
assert sol.containsDuplicate(nums) == expected

Thoughts

用集合检查数字是否已经见过。

Code

solution.py
1
2
3
4
5
6
7
8
9
class Solution:
def containsDuplicate(self, nums: list[int]) -> bool:
known = set()
for v in nums:
if v in known:
return True
known.add(v)

return False