Skip to content

Commit 324fbd8

Browse files
committed
feat: add solutions to lc problems: No.1040
1 parent 4f1fd24 commit 324fbd8

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

solution/1000-1099/1040.Moving Stones Until Consecutive II/README.md

+24
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,30 @@ func min(a, b int) int {
176176
}
177177
```
178178

179+
### **TypeScript**
180+
181+
```ts
182+
function numMovesStonesII(stones: number[]): number[] {
183+
stones.sort((a, b) => a - b);
184+
const n = stones.length;
185+
let mi = n;
186+
const mx =
187+
Math.max(stones[n - 1] - stones[1] + 1, stones[n - 2] - stones[0] + 1) -
188+
(n - 1);
189+
for (let i = 0, j = 0; j < n; ++j) {
190+
while (stones[j] - stones[i] + 1 > n) {
191+
++i;
192+
}
193+
if (j - i + 1 === n - 1 && stones[j] - stones[i] === n - 2) {
194+
mi = Math.min(mi, 2);
195+
} else {
196+
mi = Math.min(mi, n - (j - i + 1));
197+
}
198+
}
199+
return [mi, mx];
200+
}
201+
```
202+
179203
### **...**
180204

181205
```

solution/1000-1099/1040.Moving Stones Until Consecutive II/README_EN.md

+24
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,30 @@ func min(a, b int) int {
159159
}
160160
```
161161

162+
### **TypeScript**
163+
164+
```ts
165+
function numMovesStonesII(stones: number[]): number[] {
166+
stones.sort((a, b) => a - b);
167+
const n = stones.length;
168+
let mi = n;
169+
const mx =
170+
Math.max(stones[n - 1] - stones[1] + 1, stones[n - 2] - stones[0] + 1) -
171+
(n - 1);
172+
for (let i = 0, j = 0; j < n; ++j) {
173+
while (stones[j] - stones[i] + 1 > n) {
174+
++i;
175+
}
176+
if (j - i + 1 === n - 1 && stones[j] - stones[i] === n - 2) {
177+
mi = Math.min(mi, 2);
178+
} else {
179+
mi = Math.min(mi, n - (j - i + 1));
180+
}
181+
}
182+
return [mi, mx];
183+
}
184+
```
185+
162186
### **...**
163187

164188
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function numMovesStonesII(stones: number[]): number[] {
2+
stones.sort((a, b) => a - b);
3+
const n = stones.length;
4+
let mi = n;
5+
const mx =
6+
Math.max(stones[n - 1] - stones[1] + 1, stones[n - 2] - stones[0] + 1) -
7+
(n - 1);
8+
for (let i = 0, j = 0; j < n; ++j) {
9+
while (stones[j] - stones[i] + 1 > n) {
10+
++i;
11+
}
12+
if (j - i + 1 === n - 1 && stones[j] - stones[i] === n - 2) {
13+
mi = Math.min(mi, 2);
14+
} else {
15+
mi = Math.min(mi, n - (j - i + 1));
16+
}
17+
}
18+
return [mi, mx];
19+
}

0 commit comments

Comments
 (0)