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];
|
2. 否则即mid在A部分(B存不存在未知), 此时当`nums[low] > nums[high]`时, 说明B部分存在, 则i在区间[mid+1, high];
|
||||||
3. 否则, 即mid在A部分且B不存在, 即low到high是严格递增的, 最小值即nums[low], 直接返回即可.
|
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++
|
# C++
|
||||||
@ -24,8 +29,12 @@ public:
|
|||||||
if(nums[low] > nums[mid]) high = mid;
|
if(nums[low] > nums[mid]) high = mid;
|
||||||
else if(nums[low] > nums[high]) low = mid + 1;
|
else if(nums[low] > nums[high]) low = mid + 1;
|
||||||
else return nums[low];
|
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