Skip to content

Commit e24dba2

Browse files
authored
feat: add rust solution to lc problem: No.2475 (doocs#1337)
Signed-off-by: xiaolatiao <1628652790@qq.com>
1 parent d14beae commit e24dba2

File tree

2 files changed

+132
-0
lines changed

2 files changed

+132
-0
lines changed

solution/2400-2499/2475.Number of Unequal Triplets in Array/README.md

+66
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,72 @@ impl Solution {
385385
}
386386
```
387387

388+
```rust
389+
use std::collections::HashMap;
390+
391+
impl Solution {
392+
pub fn unequal_triplets(nums: Vec<i32>) -> i32 {
393+
let cnt = nums.iter().fold(HashMap::new(), |mut map, &n| {
394+
*map.entry(n).or_insert(0) += 1;
395+
map
396+
});
397+
398+
let mut ans = 0;
399+
let n = nums.len();
400+
let mut a = 0;
401+
for &b in cnt.values() {
402+
let c = n - a - b;
403+
ans += a * b * c;
404+
a += b;
405+
}
406+
407+
ans as i32
408+
}
409+
}
410+
```
411+
412+
```rust
413+
impl Solution {
414+
pub fn unequal_triplets(nums: Vec<i32>) -> i32 {
415+
let mut ans = 0;
416+
let mut nums = nums;
417+
nums.sort();
418+
let n = nums.len();
419+
420+
for i in 1..n - 1 {
421+
422+
let mut l = 0;
423+
let mut r = i;
424+
while l < r {
425+
let mid = (l + r) >> 1;
426+
if nums[mid] >= nums[i] {
427+
r = mid;
428+
} else {
429+
l = mid + 1;
430+
}
431+
}
432+
let j = r;
433+
434+
let mut l = i + 1;
435+
let mut r = n;
436+
while l < r {
437+
let mid = (l + r) >> 1;
438+
if nums[mid] > nums[i] {
439+
r = mid;
440+
} else {
441+
l = mid + 1;
442+
}
443+
}
444+
let k = r;
445+
446+
ans += j * (n - k)
447+
}
448+
449+
ans as i32
450+
}
451+
}
452+
```
453+
388454
### **...**
389455

390456
```

solution/2400-2499/2475.Number of Unequal Triplets in Array/README_EN.md

+66
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,72 @@ impl Solution {
353353
}
354354
```
355355

356+
```rust
357+
use std::collections::HashMap;
358+
359+
impl Solution {
360+
pub fn unequal_triplets(nums: Vec<i32>) -> i32 {
361+
let cnt = nums.iter().fold(HashMap::new(), |mut map, &n| {
362+
*map.entry(n).or_insert(0) += 1;
363+
map
364+
});
365+
366+
let mut ans = 0;
367+
let n = nums.len();
368+
let mut a = 0;
369+
for &b in cnt.values() {
370+
let c = n - a - b;
371+
ans += a * b * c;
372+
a += b;
373+
}
374+
375+
ans as i32
376+
}
377+
}
378+
```
379+
380+
```rust
381+
impl Solution {
382+
pub fn unequal_triplets(nums: Vec<i32>) -> i32 {
383+
let mut ans = 0;
384+
let mut nums = nums;
385+
nums.sort();
386+
let n = nums.len();
387+
388+
for i in 1..n - 1 {
389+
390+
let mut l = 0;
391+
let mut r = i;
392+
while l < r {
393+
let mid = (l + r) >> 1;
394+
if nums[mid] >= nums[i] {
395+
r = mid;
396+
} else {
397+
l = mid + 1;
398+
}
399+
}
400+
let j = r;
401+
402+
let mut l = i + 1;
403+
let mut r = n;
404+
while l < r {
405+
let mid = (l + r) >> 1;
406+
if nums[mid] > nums[i] {
407+
r = mid;
408+
} else {
409+
l = mid + 1;
410+
}
411+
}
412+
let k = r;
413+
414+
ans += j * (n - k)
415+
}
416+
417+
ans as i32
418+
}
419+
}
420+
```
421+
356422
### **...**
357423

358424
```

0 commit comments

Comments
 (0)