35. 搜索插入位置

题目

https://leetcode-cn.com/problems/search-insert-position/

思路

最基础的二分法,有一个亮点就是思考怎么找到被插入的数字的位置

1. 注意js的除法是会自动计算出小数的,所以计算mid的时候要注意写成是Math.floor( )

2. 当数字不存在时,插入的位置就是lower的位置。

   因为在最后一次循环的时候,一定有lower = upper = mid;

   然后,假如插入的数比这个位置的数大,那么就会有lower = mid + 1;

   假如插入的数比这个位置的数小,那么这个位置正好是它应该被插入的地方

代码

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
	let lower = 0;
	let upper = nums.length - 1;
	let mid = 0;

	while (lower <= upper){
		mid = lower + Math.floor((upper - lower)/2);
		if (nums[mid] === target){
			return mid;
		}
		else if (nums[mid] < target){
			lower = mid + 1;
		}
		else{
			upper = mid - 1;
		}
	}
	return lower;//如果都没找到的话,插入的位置应该就是lower的位置
};

上一篇:人人皆知Python功能,你还不了解嘛?


下一篇:python方法合集