leetcode------Find Minimum in Rotated Sorted Array
标题: | Find Minimum in Rotated Sorted Array |
通过率: | 32.8% |
难度: | 中等 |
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、start一定大于等于end
2、若mid大于end时,小元素一定在mid的右边,大元素一定在mid的左边(包含mid),
3、若mid小于end时,小元素一定在mid的左边(包含mid),大元素一定再mid右边,
4、若mid等于end时,说明存在重复元素,无法判断时,将start进行++操作,
示例:{3451}为第二种情况,{23451111}为第四种情况
如果是{111123451}也为第四种情况,若是一个旋转数组,出现第四种情况时将start++操作,不用去判断加1前是否满足。因为加一前的这个元素一定不是想要的,从举出的例子中可以看出来。
java代码如下:
1 public class Solution { 2 public int findMin(int[] num) { 3 int start=0,end=num.length-1,mid=0; 4 while(start<end&&num[start]>=num[end]){ 5 mid=(start+end)/2; 6 if(num[mid]>num[end]){ 7 start=mid+1; 8 } 9 else end=mid; 10 } 11 return num[start]; 12 } 13 }