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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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]; // 这一步应该是不会执行的
}
};
```