mirror of
https://github.com/ShusenTang/LeetCode.git
synced 2024-09-02 14:20:01 +00:00
Update 153. Find Minimum in Rotated Sorted Array.md
This commit is contained in:
parent
1046d008e1
commit
204bedc7f1
@ -10,6 +10,11 @@
|
||||
2. 否则即mid在A部分(B存不存在未知), 此时当`nums[low] > nums[high]`时, 说明B部分存在, 则i在区间[mid+1, high];
|
||||
3. 否则, 即mid在A部分且B不存在, 即low到high是严格递增的, 最小值即nums[low], 直接返回即可.
|
||||
|
||||
或者考虑`nums[high]`和`nums[mid]`的大小关系(考虑`nums[low]`和`nums[mid]`关系不是一个好选择, 见[33题解](https://github.com/ShusenTang/LeetCode/blob/master/solutions/33.%20Search%20in%20Rotated%20Sorted%20Array.md))也可以:
|
||||
* 若`nums[mid] < nums[high]`,此时最小值只能是位于[low, mid]。
|
||||
* 否则若`nums[mid] > nums[high]`,此时最小值只能是位于[mid+1, low]。
|
||||
* 假设`nums[mid] == nums[high]`,此时low = mid = high,最小值就是nums[mid]。
|
||||
|
||||
> 注意边界情况.
|
||||
|
||||
# C++
|
||||
@ -24,8 +29,12 @@ public:
|
||||
if(nums[low] > nums[mid]) high = mid;
|
||||
else if(nums[low] > nums[high]) low = mid + 1;
|
||||
else return nums[low];
|
||||
// 或者:
|
||||
// if(nums[mid] > nums[high]) low = 1 + mid;
|
||||
// else if(nums[mid] < nums[high]) high = mid;
|
||||
// else return nums[low];
|
||||
}
|
||||
return nums[mid];
|
||||
return nums[low]; // 这一步应该是不会执行的
|
||||
}
|
||||
};
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user