我的LeetCode代码仓:https://github.com/617076674/LeetCode
题目描述:
知识点:二分搜索法
思路:floor函数和ceil函数
本题的算法逻辑很清楚,本质上就是floor()函数和ceil()函数的实现。其实比floor()函数和ceil()函数的实现还要简单点,因为当找不到target时,我们直接返回-1。
floor()函数的实现过程:
(1)令left的初始值为-1,right的初始值为nums.length - 1。
(2)当left < right时进行以下循环,
a.计算mid时,为了防止死循环的出现,需要向上取整。
b.当target小于等于nums[mid]时,我们应该在左半部分寻找,令right = mid - 1。当target大于nums[mid]时,我们应该在右半部分寻找,令left = mid。
(3)结束循环后,如果left + 1不越界且nums[left + 1]的值为target,说明target在数组nums