Contains Duplicate

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.

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 <= 10^5
  • -10^9 <= nums[i] <= 10^9

Solution

There are a few ways to go about this. If the array were sorted this could be done in O(n) time with O(1) space, but unfortunately a sorted array is not guarenteed.

Naive

class Solution {
    // naive solution will be O(n^2)
    // sorting the array beforehand would make this O(n*log(n)) with O(n) verification
    // we could use a HashMap (or HashSet). O(1) insert/lookup in the average case, O(n) worst case
    // will use O(n) storage
    public boolean containsDuplicate(int[] nums) {
        var set = new HashSet<Integer>();
        for (int i = 0; i < nums.length; i++) {
            var val = nums[i];
            if (set.contains(val)) {
                return true;
            }
            set.add(val);
        }
        return false;
    }
}

Recent posts from blogs that I like

Grit your teeth and ship it

Being good at building and being good at shipping are two separate skills. In the short term, they’re actually countervailing: if you have a gift for building, you’re likely to be worse at shipping. Ira Glass has a classic quote about this.

All of us who do creative work, we get into it because we ...

via Sean Goedecke

Notes on discrete-time Fourier series and transform

The following are my notes on discrete-time Fourier series (DTFS), as well as the discrete-time Fourier transform (DTFT). These topics serve as an important theoretical underpinning to the digital processing of signals by computers using the DFT (which will be covered in a future post). For discrete...

via Eli Bendersky

Painting la Manche: Calais to Étretat

Paintings by JMW Turner, Clarkson Stanfield, Virginie Demont-Breton, Lepic, Boudin, Carpentier, Eugène Isabey, Jongkind, Monet, and others.

via The Eclectic Light Company