首页 > 代码库 > LeetCode Solutions : Find Minimum in Rotated Sorted Array
LeetCode Solutions : Find Minimum in Rotated Sorted Array
【题目描述】
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
Find the minimum element.
You may assume no duplicate exists in the array.
【算法思路】利用折半查找的思路去查找这个最小元素
【编程步骤】
* 1. 如果数组num只有一个元素,则所求的最小的元素就是它了;
* 2. 若left到right位置的元素严格递增,则最小的元素为num[left],如左图
否则,如右图,利用折半查找,若left到mid递增有序,则最小元素必出现在右边部分:mid+1到right;
若mid到right递增有序,则最小元素出现在左边部分:left到mid;
while(left<right){ if(num[left]<num[right]){ return num[left]; }else{ int mid=(left+right)/2; if(num[mid]>=num[left]) left=mid+1; else if(num[mid]<num[right]) right=mid; } }
* 3. 返回最小元素num[left]
【代码实现】
public class Solution { public int findMin(int[] num) { if(num.length==1) return num[0]; int left=0; int right=num.length-1; while(left<right){ if(num[left]<num[right]){ return num[left]; }else{ int mid=(left+right)/2; if(num[mid]>=num[left]) left=mid+1; else if(num[mid]<num[right]) right=mid; } } return num[left]; } }
【复杂度分析】
时间上:每次折半查找排除左半边或右半边递增有序的部分,为O(log n)
空间上:O(1)
LeetCode Solutions : Find Minimum in Rotated Sorted Array
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。