剑指offer:旋转数组的最小数字

Posted blzm742624643

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer:旋转数组的最小数字相关的知识,希望对你有一定的参考价值。

思路

  数组在一定程度上是排序的,很容易分析出:可以采用二分法来寻找最小数字

  如果数组的旋转是其本身,则最小数字是第一个数字

public class 旋转数组的最小数字 {
	public int minNumberInRotateArray(int [] array) {
		if(array.length==0){
			return 0;
		}
		if(array[0]<array[array.length-1]){
			return array[0];
		}
		
		int start = 0;
		int end = array.length-1;
		int flag = 0;
		//3 4 5 1 2
		while(start+1!=end){
			int mid = (start+end)/2;
			//向右靠拢
			if(array[mid]>array[start]){
				start = mid;
			}else if(array[mid]<array[end]){//向左靠拢
				end = mid;
			}else{
				start++;
			}
		}
		
		return array[end];
	}
}

  

以上是关于剑指offer:旋转数组的最小数字的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer 11. 旋转数组的最小数字 的详细题解

Java 剑指offer(10) 旋转数组的最小数字

《剑指offer》— JavaScript旋转数组的最小数字

剑指offer旋转数组的最小数字

java刷题-剑指offer 11 旋转数组的最小数字

剑指offer——旋转数组的最小数字