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

本文介绍了一种高效查找有序循环数组中最小值的方法。通过使用二分查找思想,可以在O(log n)的时间复杂度内找到数组中的最小元素。文章提供了一个具体的C++实现示例。
2179

被折叠的 条评论
为什么被折叠?



