• 寻找旋转排序数组中的最小值


    假设一个旋转排序的数组其起始位置是未知的(比如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];
        }
    }

  • 相关阅读:
    TBalloonHint 提示
    Delphi 结构体常量的定义
    editplus的用法
    Delphi中的容器类
    delphi XE5 UnicodeString的由来
    Delphi:TObject简要说明-对象的创建流程
    Java 反射之私有字段和方法详细介绍
    Java之画图板浅析
    java中的AlgorithmParameterSpec接口
    Java抽象类简单学习
  • 原文地址:https://www.cnblogs.com/yanernanfei/p/7630156.html
Copyright © 2020-2023  润新知