Leetcode!
  • LeetCode!
  • My personal guide to Leetcode
  • Array
    • 11. Container With Most Water
    • 15. 3Sum
    • 219. Contains Duplicate II
    • 238. Product of Array Except Self
    • 245. Shortest Word Distance III
    • 392. Is Subsequence
    • 442. Find All Duplicates in an Array
    • 561. Array Partition I
    • 661. Image Smoother
    • 697. Degree of an Array
    • 723. Candy Crush
    • 832. Flipping an Image
  • Backtracking
    • 294. Flip Game II
    • 401. Binary Watch
    • 1079. Letter Tile Possibilities
  • Binary Search
    • 744. Find Smallest Letter Greater Than Target
    • 852. Peak Index in a Mountain Array
  • String
    • 6. ZigZag Conversion
    • 17. Letter Combinations of a Phone Number
    • 38. Count and Say
    • 521. Longest Uncommon Subsequence I
    • 544. Output Contest Matches
    • 937. Reorder Data in Log Files
  • Design
    • 251. Flatten 2D Vector
    • 281. Zigzag Iterator
  • Hash Table
    • 1. Two Sum
    • 508. Most Frequent Subtree Sum
    • 884. Uncommon Words from Two Sentences
    • 734. Sentence Similarity
  • Linked List
    • 2. Add Two Numbers
  • Unsorted
    • 917. Reverse Only Letters
  • Math
    • 43. Multiply Strings
    • 462. Minimum Moves to Equal Array Elements II
    • 553. Optimal Division
    • 800. Similar RGB Color
  • Greedy
    • 406. Queue Reconstruction by Height
    • 861. Score After Flipping Matrix
  • Tree
    • 701. Insert into a Binary Search Tree
    • 897. Increasing Order Search Tree
  • Divide and Conquer
    • 53. Maximum Subarray
  • Dynamic Programming
    • 62. Unique Paths
    • 63. Unique Paths II
    • 64. Minimum Path Sum
    • 120. Triangle
    • 198. House Robber
    • 213. House Robber II
    • 303. Range Sum Query - Immutable
    • 518. Coin Change 2
    • 750. Number Of Corner Rectangles
    • 337. House Robber III
  • Depth first search
    • 841. Keys and Rooms
  • Trie
    • 677. Map Sum Pairs
  • Two pointer
    • 42. Trapping Rain Water
Powered by GitBook
On this page
  • Approach 1: Brute force array lookup
  • Approach 2: Set/Hash Lookup
  • Approach 3: List Lookup
  1. Array

442. Find All Duplicates in an Array

Approach 1: Brute force array lookup

For each number in the array we can lookup the seen part of the array to see if the number exists in them, and if so add them to the answer array

def findDuplicates(self, nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    ans = []
    for i in range(len(nums)):
        if nums[i] in nums[:i]:
            ans.append(nums[i])
    return ans

As expected this solution exceeds the time limit at test case 23/28 because of the time complexity since the "in" keyword is O(n) average case

Time Complexity: O(n²)

Space Complexity: O(n) [worst case]

Approach 2: Set/Hash Lookup

For each number in the array we add the values to a set (which hashes them and stores them in a lookup table with an average O(1) runtime for "in" ) and if the values are in the set then we add them to the answer array

def findDuplicates(self, nums): 
    """
    :type nums: List[int]
    :rtype: List[int]
    """   
    ans = []    
    seen = set()
    for i in range(len(nums)):        
        if nums[i] in seen:
            ans.append(nums[i])
        else:
            seen.add(nums[i])
    return ans

This solution doesn't behave the best way since the set lookup isn't the fastest and we haven't use the fact that all the numbers are within the range of 0 to n

Time Complexity: O(n) [Average case, worst case: O(n^2)]

Space Complexity: O(n) [worst case]

Approach 3: List Lookup

For each number in the array we add the values to a list and if the values are already seen in the list then we add them to the answer array

def findDuplicates(self, nums): 
    """
    :type nums: List[int]
    :rtype: List[int]
    """   
    ans = []    
    seen = [0]*(len(nums)+1)
    for i in nums:        
        if seen[i]==1:
            ans.append(i)
        else:
            seen[i]=1
    return ans

This solution has the most optimal runtime and is at 100% of the performance chart.

Time Complexity: O(n)

Space Complexity: O(n) [worst case]

Previous392. Is SubsequenceNext561. Array Partition I

Last updated 6 years ago