要点
- 每次查找范围一定要缩小,如果另mid = l 或 mid = r时,查找范围为长度为1时会陷入死循环。
- 如果写成 l < r , 当查找范围长度为1时,会导致找不到key。
- 写成mid = l + (r - l)/2,可防止整数溢出。
- 使用ans保存已经符合条件的最后的mid,最后返回即可。
查找符合条件的位置
1 | int binary(int * arr, int val, int l, int r) |
查找符合要求的最小位置
1 | int binary(int * arr, int val, int l, int r) |
查找符合要求的最大的位置
1 | int binary(int * arr, int val, int l, int r) |