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
.
Example 1:
Input:nums
= [-1,0,3,5,9,12],target
= 9 Output: 4 Explanation: 9 exists innums
and its index is 4
Example 2:
Input:nums
= [-1,0,3,5,9,12],target
= 2 Output: -1 Explanation: 2 does not exist innums
so return -1
Note:
- You may assume that all elements in
nums
are unique. n
will be in the range[1, 10000]
.- The value of each element in
nums
will be in the range[-9999, 9999]
.
這道題就是最基本的二分搜索法了,這是博主之前總結的LeetCode Binary Search Summary 二分搜索法小結的四種之中的第一類,也是最簡單的一類,寫法什么很模版啊,注意right的初始化值,還有while的循環條件,以及right的更新值,這三點不同的人可能會有不同的寫法,選一種自己最習慣的就好啦,參見代碼如下:
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; } };
類似題目:
Search in a Sorted Array of Unknown Size
參考資料:
https://leetcode.com/problems/binary-search