DEV Community

Mridu Bhatnagar
Mridu Bhatnagar

Posted on

1 1

Day-17 Binary Search

Background

This problem statement is a part of LeetCode's learn card binary search. Under the sub-heading background.

Problem Statement

Given a sorted (in ascending order) integer array nums of n elements and a target value, 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

Note:

  1. You may assume that all elements in nums are unique n will be in the range [1, 10000].
  2. The value of each element in nums will be in the range [-9999, 9999].
Solution Approach
  1. Keep dividing the array into halves.
  2. left = 0, right = len(array)-1. Mid would be left+right/2.
  3. Then determine where the element to be searched lies.
class Solution:
    def search(self, nums: List[int], target: int) -> int:
        left = 0
        right = len(nums)-1
        while left <= right:
            mid = abs(int((left+right)/2))
            if target < nums[mid]:
                right = mid - 1
            elif target > nums[mid]:
                left = mid + 1
            elif nums[mid] == target:
                 return mid
        return -1

Learnings

  1. Time complexity is O(logn).
  2. Take care of the edge conditions.

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More