## Question

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`

.

You must write an algorithm with `O(log n)`

runtime complexity.

**Example 1:**

Input:nums = [-1,0,3,5,9,12], target = 9Output:4Explanation:9 exists in nums and its index is 4

**Example 2:**

Input:nums = [-1,0,3,5,9,12], target = 2Output:-1Explanation:2 does not exist in nums so return -1

**Constraints:**

`1 <= nums.length <= 10`

^{4}`-10`

^{4}< nums[i], target < 10^{4}- All the integers in
`nums`

are**unique**. `nums`

is sorted in ascending order.

## Python Solution

class Solution: def search(self, nums: List[int], target: int) -> int: l = 0 r = len(nums)-1 while l<=r: m = l + (r-l)//2 if nums[m]>target: r=m-1 elif nums[m]<target: l=m+1 else: return m return -1