leetcode 35. 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
【leetcode 35. 搜索插入位置】示例 1:

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

示例 2:
输入: [1,3,5,6], 2 输出: 1

示例 3:
输入: [1,3,5,6], 7 输出: 4

示例 4:
输入: [1,3,5,6], 0 输出: 0

一道典型的二分查找题:AC代码如下:
class Solution { public: int searchInsert(vector& nums, int target) { int start=0,end=nums.size()-1,middle=0; if(target>nums[end]) return end+1; while(start<=end){middle=start+(end-start)/2; if(targetnums[middle]){ start=middle+1; } if(target==nums[middle]){ return middle; } } if(nums[start]>=target) return start; elsereturn start+1; return 0; } };

JS实现代码如下:
/** * @param {number[]} nums * @param {number} target * @return {number} */ var searchInsert = function(nums, target) { var start=0,end=nums.length-1,middle=0; if(target>nums[end]) return end+1; while(start<=end){middle=start+Math.floor((end-start)/2); //floor向下取整,不然可能出现小数的情况if(targetnums[middle]){ start=middle+1; } if(target==nums[middle]){ return middle; } } if(nums[start]>target) return start; else return start+1; return 0; };

    推荐阅读