File tree 2 files changed +132
-0
lines changed
solution/2400-2499/2475.Number of Unequal Triplets in Array
2 files changed +132
-0
lines changed Original file line number Diff line number Diff line change @@ -385,6 +385,72 @@ impl Solution {
385
385
}
386
386
```
387
387
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
+
388
454
### ** ...**
389
455
390
456
```
Original file line number Diff line number Diff line change @@ -353,6 +353,72 @@ impl Solution {
353
353
}
354
354
```
355
355
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
+
356
422
### ** ...**
357
423
358
424
```
You can’t perform that action at this time.
0 commit comments