File tree 2 files changed +63
-0
lines changed
lcof2/剑指 Offer II 006. 排序数组中两个数字之和
2 files changed +63
-0
lines changed Original file line number Diff line number Diff line change @@ -148,6 +148,52 @@ class Solution
148
148
};
149
149
```
150
150
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
+
151
197
### ** ...**
152
198
153
199
```
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments