我是靠谱客的博主 个性小伙,最近开发中收集的这篇文章主要介绍Leetcode 题解 --二分查找--旋转数组的最小数字旋转数组的最小数字,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

旋转数组的最小数字

153. Find Minimum in Rotated Sorted Array (Medium)

Input: [3,4,5,1,2],
Output: 1

直接写法:

class Solution {
public int findMin(int[] nums) {
for(int i=1; i < nums.length; i++){
if(nums[i] < nums[i-1])
return nums[i];
}
return nums[0];
}
}

用二分的话

先得到中间值m

由于是否连续数组得到的,那么这个m对应的值和数组的末位值无非是比他小或者大,小的话说明从m到末位都是连续的,肯定不是我们要的那个旋转部分。小的话说明m存在于旋转后的部分之中

class Solution {
public int findMin(int[] nums) {
int l = 0, h = nums.length - 1;
while(l < h){
int m = l + (h-l) / 2;
if(nums[m] < nums[h])
h = m;
else
l = m + 1;
}
return nums[l];
}
}

 

最后

以上就是个性小伙为你收集整理的Leetcode 题解 --二分查找--旋转数组的最小数字旋转数组的最小数字的全部内容,希望文章能够帮你解决Leetcode 题解 --二分查找--旋转数组的最小数字旋转数组的最小数字所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部