# LeetCode 704. Binary Search

## Description

https://leetcode.com/problems/binary-search/

Given an array of integers `nums` which is sorted in ascending order, and an integer `target`, 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 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
```

Constraints:

• `1 <= nums.length <= 104`
• `-9999 <= nums[i], target <= 9999`
• All the integers in `nums` are unique.
• `nums` is sorted in an ascending order.

## Explanation

Just implement a basic binary search to search for the target.

## Python Solution

``````class Solution:
def search(self, nums: List[int], target: int) -> int:

start = 0
end = len(nums) - 1

while start + 1 < end:

mid = start + (end - start) // 2

if nums[mid] == target:
return mid
elif nums[mid] > target:
end = mid
else:
start = mid

if nums[end] == target:
return end
elif nums[start] == target:
return start

return -1``````
• Time Complexity: O(log(N)).
• Space Complexity: O(1).