LeetCode

704. Binary Search

zhelddustmq 2024. 7. 23. 16:00

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 = 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
  • -104 < nums[i], target < 104
  • All the integers in nums are unique.
  • nums is sorted in ascending order.

code by python:

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        def bs(start, end):
            # base condition
            if start > end:
                return -1

            mid = (start + end) // 2

            if nums[mid] < target:
                return bs(mid + 1, end)
            elif nums[mid] > target:
                return bs(start, mid - 1)
            else:
                return mid
        return bs(0, len(nums) - 1)

'LeetCode' 카테고리의 다른 글

973. K Closest Points to Origin(with. HashTable)  (2) 2024.07.23
200. Number of Islands  (2) 2024.07.16
234. Palindrome Linked List  (0) 2024.07.15
215. Kth Largest Element in an Array  (0) 2024.07.15
20. Valid Parentheses  (0) 2024.07.12