Skip to content

Commit 625be56

Browse files
committed
feat: 1674. Minimum Moves to Make Array Complementary : 前缀和
1 parent 8cc0083 commit 625be56

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} limit
4+
* @return {number}
5+
*/
6+
const minMoves = function (nums, limit) {
7+
const n = nums.length; const diff = Array(2 * limit + 2).fill(0)
8+
for (let i = 0, j = n - 1; i < j; i++, j--) {
9+
const [a, b] = [nums[i], nums[j]].sort((a, b) => a - b)
10+
// 这一对数对于目标 sum 的修改次数的贡献
11+
// [2, a+1) 需要 2 次改变
12+
// [a+1, a+b) 需要 1 次改变
13+
// [a+b, a+b+1) 需要 0 次改变
14+
// [a+b+1, b+limit] 需要 1 次改变
15+
// [b+limit+1, limit+limit] 需要 2 次改变
16+
diff[2] += 2, diff[a + 1] -= 2
17+
diff[a + 1] += 1, diff[a + b] -= 1
18+
diff[a + b + 1] += 1, diff[b + limit + 1] -= 1
19+
diff[b + limit + 1] += 2, diff[2 * limit + 1] -= 1
20+
}
21+
let ans = n
22+
for (let sum = 2; sum <= 2 * limit; sum++) {
23+
diff[sum] += diff[sum - 1]
24+
ans = Math.min(ans, diff[sum])
25+
}
26+
return ans
27+
}

leetcode/残酷刷题/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
- 2132. Stamping the Grid
5151
- 1109. Corporate Flight Bookings: 差分
5252
- 2251. Number of Flowers in Full Bloom: 差分
53+
- 1674. Minimum Moves to Make Array Complementary
5354

5455
### 排序
5556

0 commit comments

Comments
 (0)