Skip to content

Latest commit

 

History

History
58 lines (51 loc) · 1.13 KB

154.find-minimum-in-rotated-sorted-array-ii.md

File metadata and controls

58 lines (51 loc) · 1.13 KB

問題

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/

回答

初回の回答:

impl Solution {
    pub fn find_min(nums: Vec<i32>) -> i32 {
        let mut l = 0;
        let mut r = nums.len() - 1;
        while l < r {
            let m = l + (r - l) / 2;
            if nums[m] > nums[m + 1] {
                return nums[m + 1]
            } else {
                r = m;
            }
        }

        l = 0;
        r = nums.len() - 1;
        while l < r {
            let m = l + (r - l) / 2;
            if nums[m - 1] > nums[m] {
                return nums[m]
            } else {
                l = m + 1;
            }
        }
        nums[0]
    }
}

二回目の回答:

impl Solution {
    pub fn find_min(nums: Vec<i32>) -> i32 {
        let mut l = 0;
        let mut r = nums.len() - 1;
        while l < r {
            let m = l + (r - l) / 2;
            if nums[m] > nums[r] {
                l = m + 1
            } else if nums[m] < nums[r] {
                r = m;
            } else {
                r -= 1;
            }
        }
        nums[l]
    }
}