704.二分查找

题目:请实现无重复数字升序数组的二分查找。给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1

方法一:暴力解法

 1 /**
 2  * @param {number[]} nums
 3  * @param {number} target
 4  * @return {number}
 5  */
 6 var search = function(nums, target) {
 7 for(let i = 0;i<nums.length;i++){
 8     if(nums[i]===target){
 9         return i;
10     }
11 }
12 return -1;
13 };

方法二:二分查找

思路:利用数组有序的特点

 1 /**
 2  * @param {number[]} nums
 3  * @param {number} target
 4  * @return {number}
 5  */
 6 var search = function(nums, target) {
 7   let l = 0, r = nums.length -1;
 8   while(l <= r){
 9      let mid = Math.floor((l+r)/2);
10      if(nums[mid] > target){
11         r = mid -1;
12      }else if(nums[mid] <target){
13          l = mid + 1;
14      }else{
15          return mid;
16      }
17   }
18   return -1;
19 };

方法三:API

  • indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
 1 /**
 2  * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 3  *
 4  * 
 5  * @param nums int整型一维数组 
 6  * @param target int整型 
 7  * @return int整型
 8  */
 9 function search( nums ,  target ) {
10     // write code here
11     return nums.indexOf(target);
12 }
13 module.exports = {
14     search : search
15 };
posted @ 2021-05-22 21:48  icyyyy  阅读(80)  评论(0)    收藏  举报