153. Find Minimum in Rotated Sorted Array--在旋轉數組中找最小值

Suppose an array sorted in ascending order 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.

題目大意:假設一個數組以升序排序,然後這個數組可能以某個數組爲軸做了旋轉,找出旋轉後的數組的最小值。

首先需要去寫一個判斷特殊情況的,比如如果數組中只有一個數字或者這個數組並沒有旋轉,設置一個變量res,使其等於Nums[0]。要找到最小的值,可以從數據的分佈來看,因爲數組以某個數字爲軸旋轉,並且數組是升序的,如果在數組中突然出現一個數字小於前面的數字,那麼這個數字本來應該是排在最前面的,即最小的,所以只需要返回這個數字即可。代碼:

int res=nums[0];
        for(int i=0;i<nums.length-1;i++){
        	if(nums[i]>nums[i+1]){
        		res = nums[i+1];
        		return res;
        	}
        }
        return res;

用這種方法效率還可以:


也可以對數組進行排序,然後選擇排序後的第一個數字,就是最小的,但是這樣效率很低:

Arrays.sort(nums);
return nums[0];


發佈了64 篇原創文章 · 獲贊 9 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章