Find Duplicate in Array Asked in: Amazon VMWare Riverbed

 Given a read-only array of n + 1 integers between 1 and n, find one number that repeats in linear time using less than O(n) space and traversing the stream sequentially O(1) times.

Sample Input:

[3 4 1 4 1]

Sample Output:

1

If there are multiple possible answers ( like in the sample case above ), output any one.

If there is no duplicate, output -1

Solution
class Solution:
    # @param A : tuple of integers
    # @return an integer
    def repeatedNumber(self, A):
        l_A=len(A)
        s_A=set(A)
        d={}
        l_s=len(s_A)
        if l_A==l_s:
            return -1
        for i in A:
            if i in d:
                d[i]+=1
            else:
                d[i]=1
        for i,j in d.items():
            if j>1:
                return i
        


Screenshot:


Comments

Popular posts from this blog

Trouble with the Number System

Residue Arithmetic

Perfect Peak of Array