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 a043f1b

Browse files
authored
feat: add rust solution to lc problem: No.1679 (#1633)
No.1679.Max Number of K-Sum Pairs
1 parent 7235d3e commit a043f1b

File tree

3 files changed

+117
-0
lines changed

3 files changed

+117
-0
lines changed

‎solution/1600-1699/1679.Max Number of K-Sum Pairs/README.md‎

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,54 @@ function maxOperations(nums: number[], k: number): number {
253253
}
254254
```
255255

256+
### **Rust**
257+
258+
```rust
259+
impl Solution {
260+
pub fn max_operations(nums: Vec<i32>, k: i32) -> i32 {
261+
let mut nums = nums.clone();
262+
nums.sort();
263+
let (mut l, mut r, mut ans) = (0, nums.len() - 1, 0);
264+
while l < r {
265+
match nums[l] + nums[r] {
266+
sum if sum == k => {
267+
ans += 1;
268+
l += 1;
269+
r -= 1;
270+
}
271+
sum if sum > k => r -= 1,
272+
_ => l += 1,
273+
}
274+
}
275+
ans
276+
}
277+
}
278+
```
279+
280+
```rust
281+
impl Solution {
282+
pub fn max_operations(nums: Vec<i32>, k: i32) -> i32 {
283+
let mut cnt = std::collections::HashMap::new();
284+
let mut ans = 0;
285+
for x in nums {
286+
let m = k - x;
287+
if let Some(v) = cnt.get_mut(&m) {
288+
ans += 1;
289+
*v -= 1;
290+
if *v == 0 {
291+
cnt.remove(&m);
292+
}
293+
} else if let Some(v) = cnt.get_mut(&x) {
294+
*v += 1;
295+
} else {
296+
cnt.insert(x, 1);
297+
}
298+
}
299+
ans
300+
}
301+
}
302+
```
303+
256304
### **...**
257305

258306
```

‎solution/1600-1699/1679.Max Number of K-Sum Pairs/README_EN.md‎

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,54 @@ function maxOperations(nums: number[], k: number): number {
220220
}
221221
```
222222

223+
### **Rust**
224+
225+
```rust
226+
impl Solution {
227+
pub fn max_operations(nums: Vec<i32>, k: i32) -> i32 {
228+
let mut nums = nums.clone();
229+
nums.sort();
230+
let (mut l, mut r, mut ans) = (0, nums.len() - 1, 0);
231+
while l < r {
232+
match nums[l] + nums[r] {
233+
sum if sum == k => {
234+
ans += 1;
235+
l += 1;
236+
r -= 1;
237+
}
238+
sum if sum > k => r -= 1,
239+
_ => l += 1,
240+
}
241+
}
242+
ans
243+
}
244+
}
245+
```
246+
247+
```rust
248+
impl Solution {
249+
pub fn max_operations(nums: Vec<i32>, k: i32) -> i32 {
250+
let mut cnt = std::collections::HashMap::new();
251+
let mut ans = 0;
252+
for x in nums {
253+
let m = k - x;
254+
if let Some(v) = cnt.get_mut(&m) {
255+
ans += 1;
256+
*v -= 1;
257+
if *v == 0 {
258+
cnt.remove(&m);
259+
}
260+
} else if let Some(v) = cnt.get_mut(&x) {
261+
*v += 1;
262+
} else {
263+
cnt.insert(x, 1);
264+
}
265+
}
266+
ans
267+
}
268+
}
269+
```
270+
223271
### **...**
224272

225273
```
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
impl Solution {
2+
pub fn max_operations(nums: Vec<i32>, k: i32) -> i32 {
3+
let mut cnt = std::collections::HashMap::new();
4+
let mut ans = 0;
5+
for x in nums {
6+
let m = k - x;
7+
if let Some(v) = cnt.get_mut(&m) {
8+
ans += 1;
9+
*v -= 1;
10+
if *v == 0 {
11+
cnt.remove(&m);
12+
}
13+
} else if let Some(v) = cnt.get_mut(&x) {
14+
*v += 1;
15+
} else {
16+
cnt.insert(x, 1);
17+
}
18+
}
19+
ans
20+
}
21+
}

0 commit comments

Comments
(0)

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