8000 minimun and search rotated soreted array · jhideki/rust_leetcode@9c48721 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9c48721

Browse files
committed
minimun and search rotated soreted array
1 parent ba816f9 commit 9c48721

File tree

3 files changed

+61
-4
lines changed

3 files changed

+61
-4
lines changed

src/main.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
mod eating_bananas;
2-
use eating_bananas::Solution;
1+
mod search_rotated;
2+
use search_rotated::Solution;
33
fn main() {
4-
let piles = vec![312884470];
5-
let result = Solution::min_eating_speed(piles, 312884469);
4+
let piles = vec![4, 5, 6, 7, 0, 1, 2];
5+
let result = Solution::search(piles, 0);
66
print!("{:?}", result);
77
}

src/minimun_rotated.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
pub struct Solution {}
2+
impl Solution {
3+
pub fn find_min(nums: Vec<i32>) -> i32 {
4+
let mut lp = 0;
5+
let mut rp = nums.len() - 1;
6+
let mut result = nums[0];
7+
while lp <= rp {
8+
if nums[lp] < nums[rp] {
9+
if nums[lp] < result {
10+
result = nums[lp];
11+
}
12+
}
13+
14+
let mid = (lp + rp) / 2;
15+
if nums[mid] < result {
16+
result = nums[mid];
17+
}
18+
19+
if nums[mid] >= nums[lp] {
20+
lp = mid + 1;
21+
} else {
22+
rp = mid - 1;
23+
}
24+
}
25+
result
26+
}
27+
}

src/search_rotated.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
pub struct Solution {}
2+
impl Solution {
3+
pub fn search(nums: Vec<i32>, target: i32) -> i32 {
4+
let mut lp = 0;
5+
let mut rp = nums.len() - 1;
6+
7+
while lp <= rp {
8+
let mid = (lp + rp) / 2;
9+
if nums[mid] == target {
10+
return mid as i32;
11+
}
12+
13+
if nums[lp] <= nums[mid] {
14+
if nums[mid] < target || nums[lp] > target {
15+
lp = mid + 1;
16+
} else if nums[mid] > target || nums[rp] < target {
17+
rp = mid - 1;
18+
}
19+
} else {
20+
if target < nums[mid] || target > nums[lp] {
21+
rp = mid - 1;
22+
} else {
23+
lp = mid + 1;
24+
}
25+
}
26+
}
27+
28+
-1
29+
}
30+
}

0 commit comments

Comments
 (0)
0