Given an array find the list of smallest k differences among the array itself.
for arr = [6,9,1] and k=3 -> [3,5,8]
diff(6,9) = 3
diff(6,1) = 5
diff(9,1) = 8
for arr [6, 4, 4, 7, 10] and k =10 => [0, 1, 2, 2, 3, 3, 3, 4, 6, 6]
diff(4,4) = 0
diff(4,6) = 2
diff(4,7) = 3
diff(4,10) = 6
diff(4,6) = 2
diff(4,7) = 3
diff(4,10) = 6
diff(6,7) = 1
diff(6,10) = 4
diff(7,10) = 3
for arr [3,1,3,5] and k=3 => [0, 2, 2]
diff(1,3) = 2
diff(1,3) = 2
diff(1,5) = 4
diff(3,3) = 0
diff(3,5) = 2
diff(3,5) = 2
brute force implementation is below but the issue is with the constraints
n (array_length) = 2 * 10^5
1<= arr[i] <= 10^8
1<=k<=min(210^5 , n(n-1)/2)
def getSmallestInefficiencies(arr,k):
arr.sort()
ans=[]
for i in range(0,len(arr)-1):
for j in range(i+1,len(arr)):
ans.append(abs(arr[i]-arr[j]))
ans.sort()
return ans[:k]for big input sizes it gives memory error as array size can go beyond 10^10.
Need help.