题解 | #二分查找-I#
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
- 设置两个检查点
- 因为数组是升序数组,所以去数组中点来与目标值target进行对比,不断缩小范围
- 当中点与target判断之后,以中点为基准对两个检查点进行加一或者是减一操作
- 当target与中点相同,那就是当前坐标
- 失败返回-1
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @param target int整型 * @return int整型 */ export function search(nums: number[], target: number): number { // write code here //let index = nums.indexOf(target) let index = -1 //空 if(nums.length==0) { return -1 } /* for(let i = 0,j=nums.length-1;i<j;i++,j--) { let middle=Math.floor((i+j)/2) if(nums[middle]>) }*/ let i=0,j=nums.length-1,middle=0 while(i<=j) { middle=Math.floor((i+j)/2) if(nums[middle]>target) { j=middle-1 } else if(nums[middle]<target){ i=middle+1 }else { return middle } } return index }