Binary Search
Question
Given a sorted (in ascending order) integer array
nums
ofn
elements and atarget
value, write a function to searchtarget
innums
. Iftarget
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 in nums and its index is 4
Example 2:
Input: nums = [-1,0,3,5,9,12], target = 2 Output: -1 Explanation: 2 does not exist in nums 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]
.s
Approach 1: Binary Search
Intuition and Algorithm
1 | class Solution(object): |
Complexity Analysis
- Time complexity :
. - Let's compute time complexity with the help of master
theorem
. The equation represents dividing the problem up into subproblems of size in time. Here at step there is only one subproblem a = 1
, its size is a half of the initial problemb = 2
, and all this happens in a constant timed = 0
. That means thatand hence we're dealing with case 2 that results in time complexity. - Space complexity :
since it's a constant space solution. - Runtime: 236 ms, faster than 11.72% of Python online submissions for Binary Search.
- Memory Usage: 12.8 MB, less than 33.33% of Python online submissions for Binary Search.