Given a sorted (in ascending order) integer array nums
of n
elements and a target
value, write a function to search target
in nums
. If target
exists, then return its index, otherwise return -1
.html
Example 1:spa
Input: = [-1,0,3,5,9,12], = 9 Output: 4 Explanation: 9 exists in and its index is 4 numstargetnums
Example 2:code
Input: = [-1,0,3,5,9,12], = 2 Output: -1 Explanation: 2 does not exist in so return -1 numstargetnums
Note:htm
nums
are unique.n
will be in the range [1, 10000]
.nums
will be in the range [-9999, 9999]
.
這道題就是最基本的二分搜索法了,這是博主以前總結的LeetCode Binary Search Summary 二分搜索法小結的四種之中的第一類,也是最簡單的一類,寫法什麼很模版啊,注意right的初始化值,還有while的循環條件,以及right的更新值,這三點不一樣的人可能會有不一樣的寫法,選一種本身最習慣的就好啦,參見代碼以下:blog
class Solution { public: int search(vector<int>& nums, int target) { int left = 0, right = nums.size(); while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] == target) return mid; else if (nums[mid] < target) left = mid + 1; else right = mid; } return -1; } };
相似題目:element
Search in a Sorted Array of Unknown Sizeleetcode
參考資料:get
https://leetcode.com/problems/binary-searchit