@@ -501,39 +501,39 @@ func search(nums: [Int], target: Int) -> Int {
501
501
502
502
### ** Rust:**
503
503
504
- (版本一)左闭右开区间
504
+ (版本一)左闭右闭区间
505
505
506
506
``` rust
507
507
use std :: cmp :: Ordering ;
508
508
impl Solution {
509
509
pub fn search (nums : Vec <i32 >, target : i32 ) -> i32 {
510
- let (mut left , mut right ) = (0 , nums . len ());
511
- while left < right {
510
+ let (mut left , mut right ) = (0_ i32 , nums . len () as i32 - 1 );
511
+ while left <= right {
512
512
let mid = (right + left ) / 2 ;
513
- match nums [mid ]. cmp (& target ) {
513
+ match nums [mid as usize ]. cmp (& target ) {
514
514
Ordering :: Less => left = mid + 1 ,
515
- Ordering :: Greater => right = mid ,
516
- Ordering :: Equal => return mid as i32 ,
515
+ Ordering :: Greater => right = mid - 1 ,
516
+ Ordering :: Equal => return mid ,
517
517
}
518
518
}
519
519
- 1
520
520
}
521
521
}
522
522
```
523
523
524
- //(版本二)左闭右闭区间
524
+ //(版本二)左闭右开区间
525
525
526
526
``` rust
527
527
use std :: cmp :: Ordering ;
528
528
impl Solution {
529
529
pub fn search (nums : Vec <i32 >, target : i32 ) -> i32 {
530
- let (mut left , mut right ) = (0 , nums . len ());
531
- while left <= right {
530
+ let (mut left , mut right ) = (0_ i32 , nums . len () as i32 );
531
+ while left < right {
532
532
let mid = (right + left ) / 2 ;
533
- match nums [mid ]. cmp (& target ) {
533
+ match nums [mid as usize ]. cmp (& target ) {
534
534
Ordering :: Less => left = mid + 1 ,
535
- Ordering :: Greater => right = mid - 1 ,
536
- Ordering :: Equal => return mid as i32 ,
535
+ Ordering :: Greater => right = mid ,
536
+ Ordering :: Equal => return mid ,
537
537
}
538
538
}
539
539
- 1
0 commit comments