Skip to content

Commit 72bf159

Browse files
committedJun 8, 2023
feat: 2563_count_fair_pairs
1 parent 0c90f18 commit 72bf159

File tree

7 files changed

+109
-0
lines changed

7 files changed

+109
-0
lines changed
 

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ out
1212
*_input.txt
1313
*_output.txt
1414
build
15+
target

‎Cargo.lock

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[workspace]
2+
3+
members = [
4+
"leetcode/残酷刷题/rs",
5+
]

‎leetcode/残酷刷题/rs/Cargo.lock

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎leetcode/残酷刷题/rs/Cargo.toml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[package]
2+
name = "rs"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7+
8+
[dependencies]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/*
2+
/**
3+
* @param {number[]} nums
4+
* @param {number} lower
5+
* @param {number} upper
6+
* @return {number}
7+
*/
8+
var countFairPairs = function(nums, lower, upper) {
9+
const n = nums.length
10+
nums.sort((a, b) => a-b)
11+
nums[n] = 1e10
12+
let c = 0
13+
// console.log(nums)
14+
for (let i = 0; i < n; i++) {
15+
let s, t
16+
let l = i+1, r = n
17+
// 第一个 >= lower 的地方
18+
while (l < r) {
19+
const mid = l+r >> 1
20+
if (nums[i]+nums[mid] >= lower) r = mid
21+
else l = mid+1
22+
}
23+
s = l
24+
// 第一个 > upper 的地方
25+
l = 1, r = n
26+
while (l < r) {
27+
const mid = l+r >> 1
28+
if (nums[i]+nums[mid] > upper) r = mid
29+
else l = mid+1
30+
}
31+
t = l
32+
// 区间 [s, t)
33+
c += Math.max(t-s, 0)
34+
// console.log(i, s, t, t-s)
35+
}
36+
return c
37+
};
38+
*/
39+
impl Solution {
40+
pub fn count_fair_pairs(nums: Vec<i32>, lower: i32, upper: i32) -> i64 {
41+
let n = nums.len();
42+
let mut nums = nums;
43+
nums.sort();
44+
nums.push(1e10 as i32);
45+
let mut c = 0;
46+
for i in 0..n {
47+
let mut s;
48+
let mut t;
49+
let mut l = i + 1;
50+
let mut r = n;
51+
while l < r {
52+
let mid = (l + r) >> 1;
53+
if nums[i] + nums[mid] >= lower {
54+
r = mid;
55+
} else {
56+
l = mid + 1;
57+
}
58+
}
59+
s = l;
60+
l = i + 1;
61+
r = n;
62+
while l < r {
63+
let mid = (l + r) >> 1;
64+
if nums[i] + nums[mid] > upper {
65+
r = mid;
66+
} else {
67+
l = mid + 1;
68+
}
69+
}
70+
t = l;
71+
c += t - s;
72+
}
73+
return c as i64;
74+
}
75+
}

‎leetcode/残酷刷题/rs/src/main.rs

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
fn main() {
2+
println!("Hello, world!");
3+
4+
let a: i32 = "1";
5+
panic!();
6+
}

0 commit comments

Comments
 (0)
Please sign in to comment.