Advertisement
1sairandhri

min abs difference between 2 elts array

Apr 3rd, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.15 KB | None | 0 0
  1. def generate(n,MAX):
  2.     seen = set()
  3.     for _ in range(MAX):
  4.         seen.add(n)
  5.         if n%2==0 and n/2 not in seen and n/2>0:
  6.             n = n//2
  7.         elif n%2!=0 and n*2 not in seen and n*2<MAX:
  8.             n = n*2
  9.         else:
  10.             continue
  11.     return list(seen)
  12. def getMinDiff(arr, n):
  13.     MAX,MIN = 10,10**9
  14.     # To store the frequency of each element
  15.     freq = [0 for i in range(MAX)]
  16.     for i in range(n):
  17.         # Update the frequency of current element
  18.         for k in generate(arr[i],MAX):
  19.             freq[k] += 1
  20.         # If current element appears more than once then the min abs diff will be 0 i.e. |arr[i] - arr[i]|
  21.         if (freq[k] > 1):
  22.             return 0
  23.    
  24.     # Checking the distance between the nearest two elements in the frequency array
  25.     for i in range(MAX):
  26.         if (freq[i] > 0):
  27.             i += 1
  28.             cnt = 1
  29.             while ((freq[i] == 0) and (i != MAX - 1)):
  30.                 cnt += 1
  31.                 i += 1
  32.             MIN = min(cnt, MIN)
  33.             i -= 1  
  34.     return MIN, freq
  35. # Driver code
  36. arr = [3, 6, 8]
  37. n = len(arr)  
  38. print(getMinDiff(arr, n))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement