概述
旋转数组的最小数字
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 题解 --二分查找--旋转数组的最小数字旋转数组的最小数字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复