Medium
You are given two integer arrays arr
and brr
of length n
, and an integer k
. You can perform the following operations on arr
any number of times:
arr
into any number of contiguous non-empty subarrays and rearrange these subarrays in any order. This operation has a fixed cost of k
.arr
and add or subtract a positive integer x
to it. The cost of this operation is x
.Return the minimum total cost to make arr
equal to brr
.
Example 1:
Input: arr = [-7,9,5], brr = [7,-2,-5], k = 2
Output: 13
Explanation:
arr
into two contiguous subarrays: [-7]
and [9, 5]
and rearrange them as [9, 5, -7]
, with a cost of 2.arr[0]
. The array becomes [7, 5, -7]
. The cost of this operation is 2.arr[1]
. The array becomes [7, -2, -7]
. The cost of this operation is 7.arr[2]
. The array becomes [7, -2, -5]
. The cost of this operation is 2.The total cost to make the arrays equal is 2 + 2 + 7 + 2 = 13
.
Example 2:
Input: arr = [2,1], brr = [2,1], k = 0
Output: 0
Explanation:
Since the arrays are already equal, no operations are needed, and the total cost is 0.
Constraints:
1 <= arr.length == brr.length <= 105
0 <= k <= 2 * 1010
-105 <= arr[i] <= 105
-105 <= brr[i] <= 105
import kotlin.math.abs
import kotlin.math.min
class Solution {
fun minCost(arr: IntArray, brr: IntArray, k: Long): Long {
val n = arr.size
var sum1: Long = 0
var sum2: Long
for (i in 0..<n) {
sum1 = sum1 + abs((arr[i] - brr[i]))
}
if (k < sum1) {
arr.sort()
brr.sort()
sum2 = k
for (i in 0..<n) {
sum2 = sum2 + abs((arr[i] - brr[i]))
}
} else {
return sum1
}
return min(sum1, sum2)
}
}