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 };

浙公网安备 33010602011771号