Leetcode Find Minimum in Rotated Sorted Array II 相关代码,本算法根据旋转后的数组的特性,对二分查找进行了相关改进,以下提供cpp代码,以及相关测试:
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
int findMin(vector<int>& nums) {
int len = nums.size();
if (len == 0) {
return 0;
}
if (len == 1) {
return nums[0];
}
int low = 0;
int high = len - 1;
int mid = 0;
while (low + 1< high) {
mid = (low + high) / 2;
if (nums[low] == nums[high]) {
high = high - 1;
} else if (nums[low] <= nums[mid] && nums[high] < nums[mid]) {
low = mid;
} else {
high = mid;
}
}
return nums[low] <= nums[high]? nums[low]: nums[high];
}
};
int main(int argc, char* argv[]) {
Solution so;
vector<int> test(3, 0);
test[0] = 3;
test[1] = 3;
test[2] = 1;
int re = so.findMin(test);
cout<<"result: "<<re<<endl;
return 0;
}