标签:
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.
[分析]
二分法, 如果 num[mid] 和相邻elements 不是ordered, 最小值可得. 否则, 查看 low 和 high 是否有序, 跳到无顺序的一半.[注意事项]
NONE
[CODE]
public class Solution { public int findMin(int[] num) { if(num==null || num.length < 1) return 0; // ask interviewer which value should return: Integer.MIN_VALUE or throw a Exception. int low = 0, high = num.length-1; while(low < high) { int mid = low + (high-low)/2; int x = num[mid]; if( mid != num.length-1 && x>num[mid+1]){ return num[mid+1]; } else if(num[mid] < num[low]) { high = mid; } else if(num[mid] > num[high]) { low = mid; } else { return num[low]; } } return num[low]; } }
leetcode 153: Find Minimum in Rotated Sorted Array
标签:
原文地址:http://blog.csdn.net/xudli/article/details/42258905