zoukankan      html  css  js  c++  java
  • 寻找旋转排序数组中的最小值

    假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。

    你需要找到其中最小的元素。

    你可以假设数组中不存在重复的元素。

    思路:二分法

    1、判断最小的数是否在第一个位置,若是则返回nums[0];

    2、否则,选取中间位置 mid 的数和 r 位置的数进行比较,若nums[mid] < nums[r],说明最小的数在mid之前,r = mid;反之,令 l = mid+1;

    3、重复进行,直到 l >= r。

    public class Solution {
        /*
         * @param nums: a rotated sorted array
         * @return: the minimum number in the array
         */
        public int findMin(int[] nums) {
            // write your code here
            int l = 0;
            int r = nums.length - 1;
            if (nums[l] < nums[r]){
                return nums[l];
            }
            while(l < r){
                int mid = (l+r)/2;
                if(nums[mid] > nums[r]){
                    l = mid + 1;
                }else{
                    r = mid;
                }
            }
            return nums[l];
        }
    }

  • 相关阅读:
    存储函数
    Laravel的请求声明周期
    哪只猴子可以当大王
    有多少苹果用来分赃
    SqlDataAdapter使用小结
    主键与外键
    SQL server 操作相关
    C# 窗体相关知识
    C#中winform DataGridView常用修改点
    maven 坐标获取方式
  • 原文地址:https://www.cnblogs.com/yanernanfei/p/7630156.html
Copyright © 2011-2022 走看看