一、题目要求

二、重点难点分析
1.暴力拆解:直接设置一个n=0;然后for循环nums.length,当n==target时就n++,就输出,如果没有就输出n=0
2.既然输入的数组是排序的,那么我们就能很自然地想到用二分法查找算法。题目要就统计数字k在排序数组中出现的次数。二分法查找算法总是先拿数组中间的数字和k比较,如果中间数字比k大,那么k只有可能出现在数组的前半段,下一轮我们只在数组的前半段查找就可以了;如果中间的数字比k小,那么k只有可能出现在数组的后半段,下一轮我们只在数组的后半段查找就可以了。
三、代码展示
1 /** 2 * @param {number[]} nums 3 * @param {number} target 4 * @return {number} 5 */ 6 var search = function(nums, target) { 7 let left = null; 8 let right = null; 9 let i = 0; 10 let j = nums.length; 11 // 查找右边界 12 while( i<=j ){ 13 let mid = Math.floor((i+j)/2); 14 if( nums[mid] <= target ){ 15 i = mid +1; 16 }else{ 17 j = mid -1; 18 } 19 } 20 right = i; 21 i = 0; 22 j = nums.length-1; 23 // 查找左边界 24 while( i<=j ){ 25 let mid = Math.floor((i+j)/2); 26 if( nums[mid] < target ){ 27 i = mid +1; 28 }else{ 29 j = mid -1; 30 } 31 } 32 left = j; 33 return right-left-1; 34 };
浙公网安备 33010602011771号