Find the Duplicate Number

"""

Medium

Given an array of integers nums containing n + 1 integers where each integer is in the range[1, n] inclusive.

There is only one repeated number in nums, return this repeated number.

You must solve the problem without modifying the array nums and uses only constant extra space.


Example 1:

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

Example 2:

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

Example 3:

Input: nums = [1, 1]
Output: 1

Example 4:

Input: nums = [1, 1, 2]
Output: 1


Constraints:

    1 <= n <= 105
    nums.length == n + 1
    1 <= nums[i] <= n
    All the integers in nums appear only once except for precisely one integer which appears two or more times.


Follow up:

    How can we prove that at least one duplicate number must exist in nums?
    Can you solve the problem in linear runtime complexity?


"""


class Solution:
    def findDuplicate(self, nums: List[int]) -> int:
        dic = {}
        for i in range(0, len(nums)):
            dic[nums[i]] = 0

        for i in range(0, len(nums)):
            dic[nums[i]] += 1
        print(dic)

        h = dic[nums[0]]
        r = nums[0]
        for i in range(1, len(nums)):
            if dic[nums[i]] > h:
                h = dic[nums[i]]
                r = nums[i]

        return r

Comments

Popular posts from this blog

Move all negative numbers to beginning and positive to end with constant extra space

Given an array of n positive integers and a number k. Find the minimum number of swaps required to bring all the numbers less than or equal to k together

Given an array, rotate the array to the right by k steps, where k is non-negative.