Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Two Sum II - Input Array Is Sorted

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "167" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, find two numbers such that they add up to a specific target number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <= index1 < index2 <= numbers.length. Return the indices of the two numbers, index1 and index2, added by one as an integer array [index1, index2] of length 2. The tests are generated such that there is exactly one solution. You may not use the same element twice. Your solution must use only constant extra space. Example 1: Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore, index1 = 1, index2 = 2. We return [1, 2]. Example 2: Input: numbers = [2,3,4], target = 6 Output: [1,3] Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, index2 = 3. We return [1, 3]. Example 3: Input: numbers = [-1,0], target = -1 Output: [1,2] Explanation: The sum of -1 and 0 is -1. Therefore index1 = 1, index2 = 2. We return [1, 2]. Constraints: 2 <= numbers.length <= 3 * 104 -1000 <= numbers[i] <= 1000 numbers is sorted in non-decreasing order. -1000 <= target <= 1000 The tests are generated such that there is exactly one solution.

Explanation

Here's the breakdown of the solution and the Python code:

  • High-Level Approach:

    • Utilize the fact that the input array is sorted.
    • Employ a two-pointer approach, one starting from the beginning and the other from the end of the array.
    • Move the pointers based on whether the sum of the elements at the pointers is less than, greater than, or equal to the target.
  • Complexity:

    • Runtime Complexity: O(n)
    • Storage Complexity: O(1)

Code

    def twoSum(numbers, target):    """
    Finds two numbers in a sorted array that add up to a target value.

    Args:
        numbers: A 1-indexed sorted array of integers.
        target: The target sum.

    Returns:
        A list of two integers representing the 1-based indices of the two numbers.
    """
    left = 0
    right = len(numbers) - 1

    while left < right:
        current_sum = numbers[left] + numbers[right]

        if current_sum == target:
            return [left + 1, right + 1]
        elif current_sum < target:
            left += 1
        else:
            right -= 1

    return []  # Should never happen as there's guaranteed to be a solution

More from this blog

C

Chatmagic blog

2894 posts