与leetcode 33有所不同,会存在重复出现数字的情况
- 在二分中若num[mid] == nums[left]就无法判断mid这个数落在右边的那段里还是左边的那段里,这时候只能先保守地left++然后进入下一轮
- 若num[mid] > num[left],那么mid与left落在同一个单调段内,那么如果这时候target正好在num[mid] 与num[left]之间,那么可以很放心的把right移到mid-1的位置。否则可以将left移到mid+1的位置
- 若num[mid] < num[right],情况与2相反。
C++ Code
1 | class Solution { |