Update 153. Find Minimum in Rotated Sorted Array.md

This commit is contained in:
ShusenTang
2020-01-29 12:06:26 +08:00
committed by GitHub
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]; // 这一步应该是不会执行的
}
};
```