迴圈有序陣列最小值
阿新 • • 發佈:2019-02-07
對於一個有序迴圈陣列arr,返回arr中的最小值。有序迴圈陣列是指,有序陣列左邊任意長度的部分放到右邊去,右邊的部分拿到左邊來。比如陣列[1,2,3,3,4],是有序迴圈陣列,[4,1,2,3,3]也是。
給定陣列arr及它的大小n,請返回最小值。
測試樣例: [4,1,2,3,3],5 返回:1public int getMin(int[] arr, int n) { int left = 0; int right = arr.length-1; int mid=0; while(left < right){ mid = left + (right - left)/2; //這是判斷已經被改動位置的迴圈陣列 if(arr[mid] > arr[left]){ left = mid;//這是判斷在右邊最小有序 }else if(arr[mid] < arr[left]){ right = mid;//這是判斷在左邊最小有序 }else{ //這是left=mid的情況時 mid++; break; } } int min = arr[mid]; //還要判斷一下沒有改動迴圈陣列的情況 int min_min = min>arr[0]? arr[0]:min; return min_min; }