Skip to content

Commit 9531bfb

Browse files
committed
feat: add rust solution to lcof2 problem: No.006
剑指 Offer II 006. 排序数组中两个数字之和
1 parent 447b397 commit 9531bfb

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

lcof2/剑指 Offer II 006. 排序数组中两个数字之和/README.md

+46
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,52 @@ class Solution
148148
};
149149
```
150150

151+
### **Rust**
152+
153+
```rust
154+
use std::cmp::Ordering;
155+
156+
impl Solution {
157+
pub fn two_sum(numbers: Vec<i32>, target: i32) -> Vec<i32> {
158+
let n = numbers.len();
159+
let mut l = 0;
160+
let mut r = n - 1;
161+
loop {
162+
match target.cmp(&(numbers[l] + numbers[r])) {
163+
Ordering::Less => r -= 1,
164+
Ordering::Greater => l += 1,
165+
Ordering::Equal => break,
166+
}
167+
}
168+
vec![l as i32, r as i32]
169+
}
170+
}
171+
```
172+
173+
```rust
174+
use std::cmp::Ordering;
175+
176+
impl Solution {
177+
pub fn two_sum(numbers: Vec<i32>, target: i32) -> Vec<i32> {
178+
let n = numbers.len();
179+
for i in 0..n - 1 {
180+
let num = target - numbers[i];
181+
let mut l = i + 1;
182+
let mut r = n - 1;
183+
while l <= r {
184+
let mid = l + (r - l) / 2;
185+
match num.cmp(&numbers[mid]) {
186+
Ordering::Less => r = mid - 1,
187+
Ordering::Greater => l = mid + 1,
188+
Ordering::Equal => return vec![i as i32, mid as i32],
189+
}
190+
}
191+
}
192+
vec![-1, -1]
193+
}
194+
}
195+
```
196+
151197
### **...**
152198

153199
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
use std::cmp::Ordering;
2+
3+
impl Solution {
4+
pub fn two_sum(numbers: Vec<i32>, target: i32) -> Vec<i32> {
5+
let n = numbers.len();
6+
let mut l = 0;
7+
let mut r = n - 1;
8+
loop {
9+
match target.cmp(&(numbers[l] + numbers[r])) {
10+
Ordering::Less => r -= 1,
11+
Ordering::Greater => l += 1,
12+
Ordering::Equal => break,
13+
}
14+
}
15+
vec![l as i32, r as i32]
16+
}
17+
}

0 commit comments

Comments
 (0)