About

I’ve decided to do a LeetCode a day, and picked an easy one to get me started #217 Contains Duplicate.

Description

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.

Example 1:

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

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

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

Constraints

1 <= nums.length <= 105

-109 <= nums[i] <= 109

Thoughts

My initial instinct was to iterate through the array and compare each value. Then I considered sorting the array, then iterating and comparing i to j. In the end I converted the array to a Set and compared the counts. While this may not be the fastest solution (O(n)) it is succinct and easy to understand.

Solution

  1. Convert the Array to a Set to automatically remove duplicates.
  2. Compare and return false unless they are equal
class Solution {
    func containsDuplicate(_ nums: [Int]) -> Bool {
        let set = Set(nums)
        return nums.count != set.count
    }
}