美文网首页
剑指 Offer 11. 旋转数组的最小数字

剑指 Offer 11. 旋转数组的最小数字

作者: 球果假水晶蓝 | 来源:发表于2023-01-08 10:40 被阅读0次

返回旋转数组的最小元素
示例 1:
输入:numbers = [3,4,5,1,2]
输出:1

示例 2:
输入:numbers = [2,2,2,0,1]
输出:0

题目
[https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/]
//两个思路,一个是二分查找,另一个是普通线性查找
impl Solution {
    pub fn min_array(numbers: Vec<i32>) -> i32 {
        // 二分查找
        let mut left:usize = 0;
        let mut right = numbers.len() - 1;
        while left < right{
            let mut middle = (left + right) / 2;
            if numbers[right] > numbers[middle]{
                right = middle;
            }else if numbers[right] < numbers[middle]{
                left = middle + 1;
            }else{
                right -= 1;
            }

        }
        return numbers[right];
    }
}
//  其他线性查找的方法 [https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/solution/rust-by-ruislan-67/](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/solution/rust-by-ruislan-67/)

impl Solution {
    pub fn min_array(numbers: Vec<i32>) -> i32 {
        // 1
        let mut numbers = numbers;
        let result = numbers.iter().min().unwrap();
        *result
        // 2
        let mut numbers = numbers;
        let result = numbers.into_iter().min().unwrap();
        result
        // 3
        let mut numbers = numbers;
        numbers.sort();
        if numbers.is_empty(){
            0
        }else{
            numbers[0]
        }
        // 4 
        let mut min = if numbers.is_empty() { 0 } else {numbers[0]};
        numbers.into_iter().for_each(|x | if x < min {min = x });
        min
        

    }
}

相关文章

网友评论

      本文标题:剑指 Offer 11. 旋转数组的最小数字

      本文链接:https://www.haomeiwen.com/subject/yakucdtx.html