CodeSignal | MinDiffofArrays
Anonymous User
795
Oct 06, 2021

image

from bisect import bisect_left
def minDiffOfArrays(a, b):
    lst = [(i, j) for (i,j) in zip(a,b)]
    lst.sort(key=lambda y: y[0])
    res =[abs(i - j) for (i, j) in lst]
    cursum = sum(res)
    cur_ = float('inf')
    idx = 0
    a.sort()
    for i in lst :
        k = bisect_left(a, i[1])
        if k == len(a):
            k_ = abs(i[1]-a[k-1])
        elif k >0:
            k_ = min(abs(i[1]-a[k]), abs(i[1]-a[k-1]))
       
        else :
            k_ = abs(i[1]-a[k])
        cur_ = min(cur_, abs(cursum - res[idx]+ k_))
        idx+=1
    return cur_
Comments (1)