Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9dbf88f

Browse files
feat: add solutions to lc problem: No.2009 (doocs#4419)
No.2009.Minimum Number of Operations to Make Array Continuous
1 parent ffca226 commit 9dbf88f

File tree

5 files changed

+246
-0
lines changed

5 files changed

+246
-0
lines changed

‎solution/2000-2099/2009.Minimum Number of Operations to Make Array Continuous/README.md‎

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,39 @@ func minOperations(nums []int) int {
178178
}
179179
```
180180

181+
#### TypeScript
182+
183+
```ts
184+
function minOperations(nums: number[]): number {
185+
const n = nums.length;
186+
nums.sort((a, b) => a - b);
187+
let m = 1;
188+
for (let i = 1; i < n; ++i) {
189+
if (nums[i] !== nums[i - 1]) {
190+
nums[m++] = nums[i];
191+
}
192+
}
193+
let ans = n;
194+
for (let i = 0; i < m; ++i) {
195+
const j = search(nums, nums[i] + n - 1, i, m);
196+
ans = Math.min(ans, n - (j - i));
197+
}
198+
return ans;
199+
}
200+
201+
function search(nums: number[], x: number, left: number, right: number): number {
202+
while (left < right) {
203+
const mid = (left + right) >> 1;
204+
if (nums[mid] > x) {
205+
right = mid;
206+
} else {
207+
left = mid + 1;
208+
}
209+
}
210+
return left;
211+
}
212+
```
213+
181214
#### Rust
182215

183216
```rust
@@ -310,6 +343,60 @@ func minOperations(nums []int) int {
310343
}
311344
```
312345

346+
#### TypeScript
347+
348+
```ts
349+
function minOperations(nums: number[]): number {
350+
nums.sort((a, b) => a - b);
351+
const n = nums.length;
352+
let m = 1;
353+
for (let i = 1; i < n; i++) {
354+
if (nums[i] !== nums[i - 1]) {
355+
nums[m] = nums[i];
356+
m++;
357+
}
358+
}
359+
let ans = n;
360+
for (let i = 0, j = 0; i < m; i++) {
361+
while (j < m && nums[j] - nums[i] <= n - 1) {
362+
j++;
363+
}
364+
ans = Math.min(ans, n - (j - i));
365+
}
366+
return ans;
367+
}
368+
```
369+
370+
#### Rust
371+
372+
```rust
373+
impl Solution {
374+
pub fn min_operations(mut nums: Vec<i32>) -> i32 {
375+
nums.sort();
376+
let n = nums.len();
377+
if n == 0 {
378+
return 0;
379+
}
380+
let mut m = 1usize;
381+
for i in 1..n {
382+
if nums[i] != nums[i - 1] {
383+
nums[m] = nums[i];
384+
m += 1;
385+
}
386+
}
387+
let mut ans = n as i32;
388+
let mut j = 0usize;
389+
for i in 0..m {
390+
while j < m && nums[j] - nums[i] <= n as i32 - 1 {
391+
j += 1;
392+
}
393+
ans = ans.min(n as i32 - (j as i32 - i as i32));
394+
}
395+
ans
396+
}
397+
}
398+
```
399+
313400
<!-- tabs:end -->
314401

315402
<!-- solution:end -->

‎solution/2000-2099/2009.Minimum Number of Operations to Make Array Continuous/README_EN.md‎

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,39 @@ func minOperations(nums []int) int {
179179
}
180180
```
181181

182+
#### TypeScript
183+
184+
```ts
185+
function minOperations(nums: number[]): number {
186+
const n = nums.length;
187+
nums.sort((a, b) => a - b);
188+
let m = 1;
189+
for (let i = 1; i < n; ++i) {
190+
if (nums[i] !== nums[i - 1]) {
191+
nums[m++] = nums[i];
192+
}
193+
}
194+
let ans = n;
195+
for (let i = 0; i < m; ++i) {
196+
const j = search(nums, nums[i] + n - 1, i, m);
197+
ans = Math.min(ans, n - (j - i));
198+
}
199+
return ans;
200+
}
201+
202+
function search(nums: number[], x: number, left: number, right: number): number {
203+
while (left < right) {
204+
const mid = (left + right) >> 1;
205+
if (nums[mid] > x) {
206+
right = mid;
207+
} else {
208+
left = mid + 1;
209+
}
210+
}
211+
return left;
212+
}
213+
```
214+
182215
#### Rust
183216

184217
```rust
@@ -311,6 +344,60 @@ func minOperations(nums []int) int {
311344
}
312345
```
313346

347+
#### TypeScript
348+
349+
```ts
350+
function minOperations(nums: number[]): number {
351+
nums.sort((a, b) => a - b);
352+
const n = nums.length;
353+
let m = 1;
354+
for (let i = 1; i < n; i++) {
355+
if (nums[i] !== nums[i - 1]) {
356+
nums[m] = nums[i];
357+
m++;
358+
}
359+
}
360+
let ans = n;
361+
for (let i = 0, j = 0; i < m; i++) {
362+
while (j < m && nums[j] - nums[i] <= n - 1) {
363+
j++;
364+
}
365+
ans = Math.min(ans, n - (j - i));
366+
}
367+
return ans;
368+
}
369+
```
370+
371+
#### Rust
372+
373+
```rust
374+
impl Solution {
375+
pub fn min_operations(mut nums: Vec<i32>) -> i32 {
376+
nums.sort();
377+
let n = nums.len();
378+
if n == 0 {
379+
return 0;
380+
}
381+
let mut m = 1usize;
382+
for i in 1..n {
383+
if nums[i] != nums[i - 1] {
384+
nums[m] = nums[i];
385+
m += 1;
386+
}
387+
}
388+
let mut ans = n as i32;
389+
let mut j = 0usize;
390+
for i in 0..m {
391+
while j < m && nums[j] - nums[i] <= n as i32 - 1 {
392+
j += 1;
393+
}
394+
ans = ans.min(n as i32 - (j as i32 - i as i32));
395+
}
396+
ans
397+
}
398+
}
399+
```
400+
314401
<!-- tabs:end -->
315402

316403
<!-- solution:end -->
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
function minOperations(nums: number[]): number {
2+
const n = nums.length;
3+
nums.sort((a, b) => a - b);
4+
let m = 1;
5+
for (let i = 1; i < n; ++i) {
6+
if (nums[i] !== nums[i - 1]) {
7+
nums[m++] = nums[i];
8+
}
9+
}
10+
let ans = n;
11+
for (let i = 0; i < m; ++i) {
12+
const j = search(nums, nums[i] + n - 1, i, m);
13+
ans = Math.min(ans, n - (j - i));
14+
}
15+
return ans;
16+
}
17+
18+
function search(nums: number[], x: number, left: number, right: number): number {
19+
while (left < right) {
20+
const mid = (left + right) >> 1;
21+
if (nums[mid] > x) {
22+
right = mid;
23+
} else {
24+
left = mid + 1;
25+
}
26+
}
27+
return left;
28+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
impl Solution {
2+
pub fn min_operations(mut nums: Vec<i32>) -> i32 {
3+
nums.sort();
4+
let n = nums.len();
5+
if n == 0 {
6+
return 0;
7+
}
8+
let mut m = 1usize;
9+
for i in 1..n {
10+
if nums[i] != nums[i - 1] {
11+
nums[m] = nums[i];
12+
m += 1;
13+
}
14+
}
15+
let mut ans = n as i32;
16+
let mut j = 0usize;
17+
for i in 0..m {
18+
while j < m && nums[j] - nums[i] <= n as i32 - 1 {
19+
j += 1;
20+
}
21+
ans = ans.min(n as i32 - (j as i32 - i as i32));
22+
}
23+
ans
24+
}
25+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function minOperations(nums: number[]): number {
2+
nums.sort((a, b) => a - b);
3+
const n = nums.length;
4+
let m = 1;
5+
for (let i = 1; i < n; i++) {
6+
if (nums[i] !== nums[i - 1]) {
7+
nums[m] = nums[i];
8+
m++;
9+
}
10+
}
11+
let ans = n;
12+
for (let i = 0, j = 0; i < m; i++) {
13+
while (j < m && nums[j] - nums[i] <= n - 1) {
14+
j++;
15+
}
16+
ans = Math.min(ans, n - (j - i));
17+
}
18+
return ans;
19+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /