二分查找及leetcode题
leetcode题目
题目一
题目:
题目
 
  
 
 
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
 
样例:
样例一
输入:
输入
 
  
 
 
nums = [-1,0,3,5,9,12], target = 9
 
输出:
输出
 
  
 
 
4
 
样例二
输入:
输入
 
  
 
 
nums = [-1,0,3,5,9,12], target = 2
 
输出:
输出
 
  
 
 
-1
 
思路:
因为是有序数组,通过数组中间元素与目标值进行比较,若相等则找到,小于则只可能在右边数组,大于则只可能在左边数组,直到数组为空。
坑点:
题目是找原数组元素下标,参数变化不应该是数组,而是数组下标。
代码:
javascript
 
  
 
 
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
//在nums[start,end)数组找值为target的下标
var search1=function(nums,target,start,end){ //数组[start,end)
    while(end>start){ //数组长度不为空
        mid=parseInt((start+end)/2); //中间元素下标
        if(nums[mid]==target)
            return mid;
        if(nums[mid]>target)
            end=mid;
        if(nums[mid]<target)
            start=mid+1;
    }
    return -1; //数组为空返回-1
}
var search = function(nums, target) {
    return search1(nums,target,0,nums.length);
};










