111 start=1 end=1
(start+end)/2 两者都很大时候可能
java里面计算结果会偏左 (0+1)/2=0
如果mid 是了 我还想知道,会不会还有,
mid+1到end 万一中间这个就是最后一个
注意找的是最后一个target
所以只能挪到mid
很容易出现死循环 mid偏左 111 没有动过位置
因此结束条件只能写成 start+1<end 中间还有两个数
就是缩小到 肉眼可以判断的个数
Find the last position of a target number in a sorted array. Return -1 if target does not exist.
Example
Given [1, 2, 2, 4, 5, 5].
For target = 2, return 2.
For target = 5, return 5.
For target = 6, return -1.
用二分法模板,缩范围时想一下怎么保证当前的数字不会被丢掉就好了。
其实就是因为这种要找最后一个第一个的题目才产生这种模板的。要最后一个所以逼着改指针不写= mid - 1写= mid,所以while条件不写start < end写start + 1 < endÿ