1. 锯齿形数组找target
有一个数组,前半部分有序,后半部分也有序,前半部分的开头元素大于后半部分的结尾元素,请从这个数组中找出target。
解题思路:
一开始我们就可以根据target和数组结尾元素的大小关系确定target属于哪个部分,之后将target和mid比较时就能根据位于哪一部分去更新l,r。
代码:
if (taret > nums[r])
while (l < r)
m = (l+r) >> 1;
if (nums[m] >= target)
r = m
else
if (nums[l] > nums[r])
r = m
else
l = m + 1
else
while (l < r)
m = (l+r)>>1
if (nums[m] >= target)
if (nums[l] > nums[r])
l = m+1
else
r = m
else
l = m+1
标签:题目,target,nums,else,二分法,while,数组,合集
From: https://www.cnblogs.com/huasyuan/p/18344232