Leetcode.704 二分查找 题目链接:704. 二分查找 - 力扣(Leetcode)
思路:令数组的左右边界分别为left和right,初始值设置为0和numsSize-1。然后设置变量middle,在循环中用nums[middle]的值和target进行比较,从而不断更新边界,直到找到target的位置(nums[middle]==target时),然后返回下标middle。比较基础的一道算法题,但是在细节上(比如边界处理的条件)需要注意。
代码实现(C语言):
(1)左闭右闭区间上的实现
(2)左闭右开区间上的实现
我的思路:暴力解,用两层for循环,一层循环遍历数组元素,另一层循环更新数组,时间复杂度为 O(n^2)
代码随想录启发:
双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
定义快慢指针
快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组
慢指针:指向更新 新数组下标的位置