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

旋转数组的最小数字

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];
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 14:23
点赞 评论 收藏
分享
06-11 13:34
门头沟学院 C++
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务