1. 程式人生 > 其它 >Windows10 系統下載與啟用

Windows10 系統下載與啟用

題目:統計一個數字在排序陣列中出現的次數。

示例 1:

輸入: nums = [5,7,7,8,8,10], target = 8
輸出: 2
示例2:

輸入: nums = [5,7,7,8,8,10], target = 6
輸出: 0

一般解法直接暴力用for迴圈,但是效率不高

我們考慮用二分法解決,右邊界減去左邊界減去1 就是target出現的次數,程式碼如下

var search = function(nums, target) {
  let  i =0 ;j = nums.length-1;let m,left,right
  //右邊界
  while(i<=j){
    m = Math.floor((i+j)/2)
    if
(nums[m]<=target){ i= m+1 }else{ j = m-1 } } right = i //因為是遞增的 targt大於最後一個值,那麼nums中肯定不存在這個target if(nums[j]!==target&&j>=0) return 0 i = 0 //左邊界 while(i<=j){ m = Math.floor((i+j)/2) console.log('m',m) if(nums[m]<target){ i= m+1 }else
{ j = m-1 } } left = j return right - left - 1 };
長風破浪會有時,直掛雲帆濟滄海