159. Find Minimum in Rotated Sorted Array
做题历程:
- 本题应该在Leetcode做过,本次独立解出,耗时10分钟
本题需要注意的思路要有一点改变,要更加关注扔掉前半部分还是后半部分,剩下的就是普通的Binary Search,直接上代码了,代码如下:
class Solution {
public:
/**
* @param nums: a rotated sorted array
* @return: the minimum number in the array
*/
int findMin(vector<int> &nums) {
// write your code here
int left = 0;
int right = nums.size() - 1;
while (left + 1 < right) {
int middle = left + (right - left) / 2;
if (nums[middle] < nums[left]) {
// throw away the right part
right = middle;
}
else if (nums[middle] > nums[right]) {
left = middle;
}
else {
return nums[left];
}
}
return min(nums[left], nums[right]);
}