Leetcode 704. 二分查詢
阿新 • • 發佈:2019-01-01
給定一個 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]
之間。
最簡單的二分
class Solution { public: int search(vector<int>& nums, int target) { int left=0; int right=nums.size()-1; int mid; while(left<=right) { mid = left + (right-left)/2; if(nums[mid]==target) return mid; else if(nums[mid]>target) right = mid-1; else left = mid+1; } return -1; } };