Skip to content

Commit 9d43c25

Browse files
authored
Create 1704-minimum-adjacent-swaps-for-k-consecutive-ones.js
1 parent 808b39e commit 9d43c25

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
var minMoves = function(nums, k) {
7+
if (k == 1) return 0;
8+
let n = 0;
9+
let pos = [];
10+
for (let i = 0; i < nums.length; ++i) {
11+
if (nums[i]) {
12+
pos.push(i - (n++));
13+
}
14+
}
15+
let sums = [];
16+
sums[0] = pos[0];
17+
for (let i = 1; i < n; ++i) {
18+
sums[i] = pos[i] + sums[i - 1];
19+
}
20+
let res = Number.MAX_VALUE;
21+
let l = (k / 2) >> 0, r = k - l - 1;
22+
for (let i = 0; i + k <= n; ++i) {
23+
let m = i + ((k / 2) >>> 0);
24+
let cur = pos[m] * l - (sums[m - 1] - sums[i] + pos[i]) - pos[m] * r + sums[i + k - 1] - sums[m];
25+
res = Math.min(cur, res);
26+
}
27+
return res;
28+
};
29+

0 commit comments

Comments
 (0)