小工具知识网

当前位置: 首页 > 行业知识 > leetcode 二分法总结

行业知识

leetcode 二分法总结

2026-10-19 03:28:43 来源:互联网转载
按照35,34的顺序刷题能更好的理解二分法!!!!

35 ���索插入位置

 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

输入: nums = [1,3,5,6], target = 5输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2输出: 1

 注意:

  • nums 为 无重复元素 的 升序 排列数组

    1.题目规定不会存在重复数字,所以如果数组中存在目标数字,返回值就是mid的值,因为二分法执行完后,mid指向的一定是目标数字位置(目标数字存在且无重复的情况)。

    2.如果数组中不存在,为了方便理解,我们假设先按序插入目标数字,这样我们只需要找到排序后target的位置记左边界。(实际上是定位到第一个大于或等于target的数的位置 )

    实际上,对于边界我们往往分开区间和闭区间(如下图,target = 8时,实际上我们要boundary -> nums[i] = 9,这是闭区间,即左边界就是boundary指向的位置,如果是开区间那么

    boundary -> nums[i] = 7,但最后插入的话要 + 1),实际上这也和判断条件有关,同样的执行代码,如果是while(left 1) + left; if (target = target)) { right = mid - 1; ans = mid; } else { left = mid + 1; } } return ans; } vector searchRange(vector& nums, int target) { int leftIdx = binarySearch(nums, target, true); int rightIdx = binarySearch(nums, target, false) - 1; if (leftIdx

上一篇:Win10账户登陆全攻略,轻松创建、切换与解决登陆问题!

下一篇:利亚方舟软件连接主机