Skip to content

Commit 9dd568d

Browse files
authored
feat: add solutions to lc problems: No.3224~3226 (#4715)
1 parent 251474b commit 9dd568d

File tree

8 files changed

+141
-0
lines changed

8 files changed

+141
-0
lines changed

solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,34 @@ function minChanges(nums: number[], k: number): number {
240240
}
241241
```
242242

243+
#### Rust
244+
245+
```rust
246+
impl Solution {
247+
pub fn min_changes(nums: Vec<i32>, k: i32) -> i32 {
248+
let n = nums.len();
249+
let mut d = vec![0; (k + 2) as usize];
250+
for i in 0..n / 2 {
251+
let x = nums[i].min(nums[n - i - 1]);
252+
let y = nums[i].max(nums[n - i - 1]);
253+
d[0] += 1;
254+
d[(y - x) as usize] -= 1;
255+
d[(y - x + 1) as usize] += 1;
256+
let idx = (y.max(k - x) + 1) as usize;
257+
d[idx] -= 1;
258+
d[idx] += 2;
259+
}
260+
let mut ans = n as i32;
261+
let mut s = 0;
262+
for x in d {
263+
s += x;
264+
ans = ans.min(s);
265+
}
266+
ans
267+
}
268+
}
269+
```
270+
243271
<!-- tabs:end -->
244272

245273
<!-- solution:end -->

solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README_EN.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,34 @@ function minChanges(nums: number[], k: number): number {
238238
}
239239
```
240240

241+
#### Rust
242+
243+
```rust
244+
impl Solution {
245+
pub fn min_changes(nums: Vec<i32>, k: i32) -> i32 {
246+
let n = nums.len();
247+
let mut d = vec![0; (k + 2) as usize];
248+
for i in 0..n / 2 {
249+
let x = nums[i].min(nums[n - i - 1]);
250+
let y = nums[i].max(nums[n - i - 1]);
251+
d[0] += 1;
252+
d[(y - x) as usize] -= 1;
253+
d[(y - x + 1) as usize] += 1;
254+
let idx = (y.max(k - x) + 1) as usize;
255+
d[idx] -= 1;
256+
d[idx] += 2;
257+
}
258+
let mut ans = n as i32;
259+
let mut s = 0;
260+
for x in d {
261+
s += x;
262+
ans = ans.min(s);
263+
}
264+
ans
265+
}
266+
}
267+
```
268+
241269
<!-- tabs:end -->
242270

243271
<!-- solution:end -->
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
impl Solution {
2+
pub fn min_changes(nums: Vec<i32>, k: i32) -> i32 {
3+
let n = nums.len();
4+
let mut d = vec![0; (k + 2) as usize];
5+
for i in 0..n / 2 {
6+
let x = nums[i].min(nums[n - i - 1]);
7+
let y = nums[i].max(nums[n - i - 1]);
8+
d[0] += 1;
9+
d[(y - x) as usize] -= 1;
10+
d[(y - x + 1) as usize] += 1;
11+
let idx = (y.max(k - x) + 1) as usize;
12+
d[idx] -= 1;
13+
d[idx] += 2;
14+
}
15+
let mut ans = n as i32;
16+
let mut s = 0;
17+
for x in d {
18+
s += x;
19+
ans = ans.min(s);
20+
}
21+
ans
22+
}
23+
}
-1.43 KB
Binary file not shown.

solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,30 @@ function bitCount(i: number): number {
140140
}
141141
```
142142

143+
#### Rust
144+
145+
```rust
146+
impl Solution {
147+
pub fn min_changes(n: i32, k: i32) -> i32 {
148+
if (n & k) != k {
149+
-1
150+
} else {
151+
(n ^ k).count_ones() as i32
152+
}
153+
}
154+
}
155+
```
156+
157+
#### C#
158+
159+
```cs
160+
public class Solution {
161+
public int MinChanges(int n, int k) {
162+
return (n & k) != k ? -1 : BitOperations.PopCount((uint)(n ^ k));
163+
}
164+
}
165+
```
166+
143167
<!-- tabs:end -->
144168

145169
<!-- solution:end -->

solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README_EN.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,30 @@ function bitCount(i: number): number {
137137
}
138138
```
139139

140+
#### Rust
141+
142+
```rust
143+
impl Solution {
144+
pub fn min_changes(n: i32, k: i32) -> i32 {
145+
if (n & k) != k {
146+
-1
147+
} else {
148+
(n ^ k).count_ones() as i32
149+
}
150+
}
151+
}
152+
```
153+
154+
#### C#
155+
156+
```cs
157+
public class Solution {
158+
public int MinChanges(int n, int k) {
159+
return (n & k) != k ? -1 : BitOperations.PopCount((uint)(n ^ k));
160+
}
161+
}
162+
```
163+
140164
<!-- tabs:end -->
141165

142166
<!-- solution:end -->
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
public class Solution {
2+
public int MinChanges(int n, int k) {
3+
return (n & k) != k ? -1 : BitOperations.PopCount((uint)(n ^ k));
4+
}
5+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
impl Solution {
2+
pub fn min_changes(n: i32, k: i32) -> i32 {
3+
if (n & k) != k {
4+
-1
5+
} else {
6+
(n ^ k).count_ones() as i32
7+
}
8+
}
9+
}

0 commit comments

Comments
 (0)