leetcode 二分查詢
阿新 • • 發佈:2020-11-18
給定一個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
};