Skip to content

Commit f516265

Browse files
authored
feat: add rust solution to lc problem: No.2465 (doocs#1344)
Signed-off-by: xiaolatiao <1628652790@qq.com>
1 parent 7fa70f1 commit f516265

File tree

3 files changed

+178
-0
lines changed

3 files changed

+178
-0
lines changed

solution/2400-2499/2465.Number of Distinct Averages/README.md

+77
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,83 @@ function distinctAverages(nums: number[]): number {
223223
}
224224
```
225225

226+
### **Rust**
227+
228+
```rust
229+
impl Solution {
230+
pub fn distinct_averages(nums: Vec<i32>) -> i32 {
231+
let mut nums = nums;
232+
nums.sort();
233+
let n = nums.len();
234+
let mut cnt = vec![0; 201];
235+
let mut ans = 0;
236+
237+
for i in 0..n >> 1 {
238+
let x = (nums[i] + nums[n - i - 1]) as usize;
239+
cnt[x] += 1;
240+
241+
if cnt[x] == 1 {
242+
ans += 1;
243+
}
244+
}
245+
246+
ans
247+
}
248+
}
249+
```
250+
251+
```rust
252+
use std::collections::HashMap;
253+
254+
impl Solution {
255+
pub fn distinct_averages(nums: Vec<i32>) -> i32 {
256+
let mut h = HashMap::new();
257+
let mut nums = nums;
258+
let mut ans = 0;
259+
let n = nums.len();
260+
nums.sort();
261+
262+
for i in 0..n >> 1 {
263+
let x = nums[i] + nums[n - i - 1];
264+
*h.entry(x).or_insert(0) += 1;
265+
266+
if *h.get(&x).unwrap() == 1 {
267+
ans += 1;
268+
}
269+
}
270+
271+
ans
272+
}
273+
}
274+
```
275+
276+
```rust
277+
use std::collections::HashSet;
278+
279+
impl Solution {
280+
pub fn distinct_averages(nums: Vec<i32>) -> i32 {
281+
let mut set = HashSet::new();
282+
let mut ans = 0;
283+
let n = nums.len();
284+
let mut nums = nums;
285+
nums.sort();
286+
287+
for i in 0..n >> 1 {
288+
let x = nums[i] + nums[n - i - 1];
289+
290+
if set.contains(&x) {
291+
continue;
292+
}
293+
294+
set.insert(x);
295+
ans += 1;
296+
}
297+
298+
ans
299+
}
300+
}
301+
```
302+
226303
### **...**
227304

228305
```

solution/2400-2499/2465.Number of Distinct Averages/README_EN.md

+77
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,83 @@ function distinctAverages(nums: number[]): number {
209209
}
210210
```
211211

212+
### **Rust**
213+
214+
```rust
215+
impl Solution {
216+
pub fn distinct_averages(nums: Vec<i32>) -> i32 {
217+
let mut nums = nums;
218+
nums.sort();
219+
let n = nums.len();
220+
let mut cnt = vec![0; 201];
221+
let mut ans = 0;
222+
223+
for i in 0..n >> 1 {
224+
let x = (nums[i] + nums[n - i - 1]) as usize;
225+
cnt[x] += 1;
226+
227+
if cnt[x] == 1 {
228+
ans += 1;
229+
}
230+
}
231+
232+
ans
233+
}
234+
}
235+
```
236+
237+
```rust
238+
use std::collections::HashMap;
239+
240+
impl Solution {
241+
pub fn distinct_averages(nums: Vec<i32>) -> i32 {
242+
let mut h = HashMap::new();
243+
let mut nums = nums;
244+
let mut ans = 0;
245+
let n = nums.len();
246+
nums.sort();
247+
248+
for i in 0..n >> 1 {
249+
let x = nums[i] + nums[n - i - 1];
250+
*h.entry(x).or_insert(0) += 1;
251+
252+
if *h.get(&x).unwrap() == 1 {
253+
ans += 1;
254+
}
255+
}
256+
257+
ans
258+
}
259+
}
260+
```
261+
262+
```rust
263+
use std::collections::HashSet;
264+
265+
impl Solution {
266+
pub fn distinct_averages(nums: Vec<i32>) -> i32 {
267+
let mut set = HashSet::new();
268+
let mut ans = 0;
269+
let n = nums.len();
270+
let mut nums = nums;
271+
nums.sort();
272+
273+
for i in 0..n >> 1 {
274+
let x = nums[i] + nums[n - i - 1];
275+
276+
if set.contains(&x) {
277+
continue;
278+
}
279+
280+
set.insert(x);
281+
ans += 1;
282+
}
283+
284+
ans
285+
}
286+
}
287+
```
288+
212289
### **...**
213290

214291
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use std::collections::HashSet;
2+
3+
impl Solution {
4+
pub fn distinct_averages(nums: Vec<i32>) -> i32 {
5+
let mut set = HashSet::new();
6+
let mut ans = 0;
7+
let n = nums.len();
8+
let mut nums = nums;
9+
nums.sort();
10+
11+
for i in 0..n >> 1 {
12+
let x = nums[i] + nums[n - i - 1];
13+
14+
if set.contains(&x) {
15+
continue;
16+
}
17+
18+
set.insert(x);
19+
ans += 1;
20+
}
21+
22+
ans
23+
}
24+
}

0 commit comments

Comments
 (0)