劍指Offer_[旋轉數組]的最小數字_06

題目描述

把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。 NOTE:給出的所有元素都大於0,若數組大小爲0,請返回0。

package code;
//
//題目描述
//把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。
//輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。
//例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。
//NOTE:給出的所有元素都大於0,若數組大小爲0,請返回0。

//思路:遍歷數組,如果a[i] > a[i+1],
//則索引i之前是數組旋轉前的後部分,i之後是數組旋轉前的前部分,i+1則是最小值
public class Offer06 
{
	public static void main(String[] args)
	{
		Offer06 offer = new Offer06();
		int[] array = {3,4,5,1,2};
		System.out.println(offer.minNumberInRotateArray(array));
	}
	
	public int minNumberInRotateArray(int[] array)
	{
		if(array.length == 0)
			return 0;//若數組大小爲0,則返回0。
		
		for(int i = 0; i < array.length-1; i++)
		{//遍歷數組,找出數組的最小值
			//如果數組剛好旋轉一週則相當於沒旋轉,此時這段代碼的功能失效
			if(array[i] > array[i+1])
				return array[i+1];
		}
		
		return array[0];//如果數組旋轉一週,則最小值仍在第一位
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章