Problem
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]
.
Solution: Binary Search
Time complexity: O(logn)
Space complexity: O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Author: Huahua // Running time: 32 ms class Solution { public: int search(vector<int>& nums, int target) { int l = 0; int r = nums.size(); while (l < r) { int m = (r - l) / 2 + l; if (nums[m] == target) return m; else if (nums[m] > target) r = m; else l = m + 1; } return -1; } }; |
STL
1 2 3 4 5 6 7 8 9 10 |
// Author: Huahua // Running time: 36 ms class Solution { public: int search(vector<int>& nums, int target) { auto it = lower_bound(nums.begin(), nums.end(), target); if (it == nums.end() || *it != target) return -1; return it - nums.begin(); } }; |
请尊重作者的劳动成果,转载请注明出处!花花保留对文章/视频的所有权利。
如果您喜欢这篇文章/视频,欢迎您捐赠花花。
If you like my articles / videos, donations are welcome.
Be First to Comment