#+ANKI_DECK: study_deck_02 * TODO 0704. Binary Search :easy: :PROPERTIES: :NEETCODE: [[file:../../roadmap.org::*0704. Binary Search][0704. Binary Search]] :END: 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:* #+begin_src Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4 #+end_src *Example 2:* #+begin_src Input: nums = [-1,0,3,5,9,12], target = 2 Output: -1 Explanation: 2 does not exist in nums so return -1 #+end_src *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. ** TODO Approach Write your approach here. ** TODO Python #+begin_src python class Solution: def search(self, nums: List[int], target: int) -> int: #+end_src ** TODO C++ #+begin_src cpp class Solution { public: int search(vector& nums, int target) { } }; #+end_src