1. 程式人生 > 實用技巧 >leetcode 二分查詢

leetcode 二分查詢

給定一個n個元素有序的(升序)整型陣列nums 和一個目標值target ,寫一個函式搜尋nums中的 target,如果目標值存在返回下標,否則返回 -1。


示例 1:

輸入: nums = [-1,0,3,5,9,12], target = 9
輸出: 4
解釋: 9 出現在 nums 中並且下標為 4
示例2:

輸入: nums = [-1,0,3,5,9,12], target = 2
輸出: -1
解釋: 2 不存在 nums 中因此返回 -1

提示:

你可以假設 nums中的所有元素是不重複的。
n將在[1, 10000]之間。
nums的每個元素都將在[-9999, 9999]之間。

分為兩部分,每次求中間值與target的關係

var search = function(nums, target) {
  let left = 0
  let right = nums.length -1
  while(left <= right) {
    let middle = Math.floor((left+right) / 2)
    if(nums[middle] < target) {
      left = middle + 1
    }else if(nums[middle] > target) {
      right = middle -1
    }else {
      return
middle } } return -1 };