Skip to content

Commit e92e805

Browse files
authored
Create 2167-minimum-time-to-remove-all-cars-containing-illegal-goods.js
1 parent 2e18e1e commit e92e805

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
var minimumTime = function(s) {
6+
7+
const { max, min } = Math
8+
9+
let n = s.length;
10+
const l = Array.from({ length: n + 1 }, () => Array(2).fill(0))
11+
const r = Array.from({ length: n + 1 }, () => Array(2).fill(0))
12+
for (let i = 0; i < n; i++) l[i][0] = l[i][1] = r[i][0] = r[i][1] = 0;
13+
if (s[0] == '1') {
14+
l[0][0] = 1;
15+
l[0][1] = 2;
16+
}
17+
for (let i = 1; i < n; i++) {
18+
if (s[i] == '0') {
19+
l[i][0] = l[i - 1][0];
20+
l[i][1] = l[i - 1][1];
21+
} else {
22+
l[i][0] = i + 1;
23+
l[i][1] = min(l[i - 1][0], l[i - 1][1]) + 2;
24+
}
25+
}
26+
if (s[n - 1] == '1') {
27+
r[n - 1][0] = 1;
28+
r[n - 1][1] = 2;
29+
}
30+
for (let i = n - 2; i >= 0; i--) {
31+
if (s[i] == '0') {
32+
r[i][0] = r[i + 1][0];
33+
r[i][1] = r[i + 1][1];
34+
} else {
35+
r[i][0] = n - i;
36+
r[i][1] = min(r[i + 1][0], r[i + 1][1]) + 2;
37+
}
38+
}
39+
let ans = n;
40+
for (let i = -1; i < n; i++) {
41+
let cost = 0;
42+
if (i != -1) cost += min(l[i][0], l[i][1]);
43+
if (i != n - 1) cost += min(r[i + 1][0], r[i + 1][1]);
44+
ans = min(ans, cost);
45+
}
46+
return ans;
47+
};

0 commit comments

Comments
 (0)