对于一个有序循环数组arr,返回arr中的最小值。有序循环数组是指,有序数组左边任意长度的部分放到右边去,右边的部分拿到左边来。比如数组[1,2,3,3,4],是有序循环数组,[4,1,2,3,3]也是。
给定数组arr及它的大小n,请返回最小值。
测试样例:
[4,1,2,3,3],5
返回:1class MinValue { public: int getMin(vector<int> arr, int n) { // write code here int left=0; int right=n-1; while(left<right){ int mid=left+(right-left)/2; if(arr[mid]>arr[left]){ left=mid; } else if(arr[mid]<arr[right]){ right=mid; } else{ mid++; if(arr[0]<arr[mid]){ mid=0; } return arr[mid]; } } return arr[0]; } };