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