The problem is as follows:
Given an array of n numbers. Give an algorithm for finding the element which
appears maximum number of times in the array.
Sample Input: [3,2,1,2,2,2,3]
Sample Output: 2
'''Using hashing Complexity Space: O(n), Time: O(n)''' arr = [3,2,1,2,2,2,3] def maximumRepetition(arr): numDict = {} for entry in arr: if entry in numDict: numDict[entry] += 1 else: numDict[entry] = 1 maxElement = 0 maxCount = 0 for entries in numDict: if numDict[entries] > maxCount: maxCount = numDict[entries] maxElement = entries return maxElement print maximumRepetition(arr) '''Improved method Complexity Time O(n) Space: O(1)''' n = len(arr) #This is supposed to be given def maximumRepitionImproved(arr): for i in range(len(arr)): arr[arr[i]] += n maxi = -1 maxValue = 0 for i in range(len(arr)): if arr[i]/n > maxValue: maxValue = arr[i]/n maxi = i return arr[maxi] print maximumRepetition(arr)