益阳市网站建设_网站建设公司_MySQL_seo优化
2025/12/24 23:02:19 网站建设 项目流程

一、题目

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

二、思路

1、二分查找中,我们要维护一个搜索范围,闭区间写法left=0,right=n-1,表示初始搜索范围是整个数组。

2、初始化是left = 0, right = n - 1(数组索引),搜索区间是[0,n-1],两端都有效。

3、循环条件:while(left <= right),left == right时,说明只剩一个元素,仍然需要检查它是否等于 target。如果是left < right就会漏检查这个情况。

4、中间值:int mid = left + (right - left) / 2; //

5、防溢出写法

6、最后返回left,当循环结束时,left恰好指向第一个大于等于target的元素位置,正是我们要插入的位置。

总结:闭区间写法的核心思想是:始终维护一个有效的搜索区间[left, right],每次缩小范围,直到区间为空,此时left恰好是答案。

三、代码

class Solution { public int searchInsert(int[] nums, int target) { int len = nums.length; int left = 0, right = len - 1; while(left <= right){ int mid = left + (right - left) /2; if(target == nums[mid]){ return mid; }else if(target > nums[mid]){ left = mid+1; }else{ right = mid-1; } } return left; } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询