File tree 1 file changed +24
-23
lines changed
scripts/algorithms/M/Minimum Absolute Sum Difference
1 file changed +24
-23
lines changed Original file line number Diff line number Diff line change
1
+ # Runtime: 2682 ms (Top 14.06%) | Memory: 30 MB (Top 26.09%)
1
2
class Solution :
2
- def minAbsoluteSumDiff (self , nums1 : List [int ], nums2 : List [int ]) -> int :
3
- n = len (nums1 )
4
- diff = []
5
- sum = 0
6
- for i in range (n ):
7
- temp = abs (nums1 [i ]- nums2 [i ])
8
- diff .append (temp )
9
- sum += temp
10
- nums1 .sort ()
11
- best_diff = []
12
- for i in range (n ):
13
- idx = bisect .bisect_left (nums1 , nums2 [i ])
14
- if idx != 0 and idx != n :
15
- best_diff .append (
16
- min (abs (nums2 [i ]- nums1 [idx ]), abs (nums2 [i ]- nums1 [idx - 1 ])))
17
- elif idx == 0 :
18
- best_diff .append (abs (nums2 [i ]- nums1 [idx ]))
19
- else :
20
- best_diff .append (abs (nums2 [i ]- nums1 [idx - 1 ]))
21
- saved = 0
22
- for i in range (n ):
23
- saved = max (saved , diff [i ]- best_diff [i ])
24
- return (sum - saved ) % ((10 ** 9 )+ (7 ))
3
+ def minAbsoluteSumDiff (self , nums1 : List [int ], nums2 : List [int ]) -> int :
4
+ n = len (nums1 )
5
+ diff = []
6
+ sum = 0
7
+ for i in range (n ):
8
+ temp = abs (nums1 [i ]- nums2 [i ])
9
+ diff .append (temp )
10
+ sum += temp
11
+ nums1 .sort ()
12
+ best_diff = []
13
+ for i in range (n ):
14
+ idx = bisect .bisect_left (nums1 , nums2 [i ])
15
+ if idx != 0 and idx != n :
16
+ best_diff .append (
17
+ min (abs (nums2 [i ]- nums1 [idx ]), abs (nums2 [i ]- nums1 [idx - 1 ])))
18
+ elif idx == 0 :
19
+ best_diff .append (abs (nums2 [i ]- nums1 [idx ]))
20
+ else :
21
+ best_diff .append (abs (nums2 [i ]- nums1 [idx - 1 ]))
22
+ saved = 0
23
+ for i in range (n ):
24
+ saved = max (saved , diff [i ]- best_diff [i ])
25
+ return (sum - saved ) % ((10 ** 9 )+ (7 ))
You can’t perform that action at this time.
0 commit comments