题解 | #旋转数组的最小数字#

旋转数组的最小数字

https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba

using System;
using System.Collections.Generic;


class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int minNumberInRotateArray (List<int> nums) {
        int i = 0;
        int j = nums.Count - 1;
        return MinNumber(i, j, nums);
    }
    public int MinNumber(int i, int j, List<int> numbers){
        if(numbers[i] < numbers[j]) return numbers[i];
        while(i < j){
            int mid = (i + j) >> 1;
            if(numbers[mid] < numbers[i]) j = mid;
            else if(numbers[mid] > numbers[j]) i = mid + 1;
            else{
                int left = MinNumber(i, mid, numbers);
                int right = MinNumber(mid + 1, j, numbers);
                if(left <= right) return left;
                else return right; 
            }
        }
        return numbers[j];
    }
}

全部评论

相关推荐

10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务