力扣hot100:搜索插入位置
2026/6/22 16:05:31 网站建设 项目流程

题目描述:

题目分析:

本题是一个二分查找,核心思路是通过计算中心点和目标值的大小关系,以此在一个while循环里不断更新左右端点,知道左端点大于右端点。

代码:

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

代码要点分析:

1.中心点的计算为mid=(right-left)/2+left,这样做是为了防止整数溢出。

2.left<=right,若目标值存在于数组中,最后一个可能的leftright是相同的,left < right会错过一些情况。具体来说,在left == right时,依然需要检查这个位置。

3.不必判断target==nums[mid]的情况,在target==nums[mid]时直接把mid更新为right-1,如果后续范围数组里还有target,那么二分查找依旧能查找到范围里的target;如果这已经是最左边的target,那么随后循环里就会出现target>nums[mid]的情况,此时left就会不断右移,知道nums[left]=target。

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

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

立即咨询