# Solving Leetcode Interviews in Seconds with AI: Search Insert Position


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "35" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), 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 sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You must write an algorithm with O(log n) runtime complexity.   Example 1:  Input: nums = [1,3,5,6], target = 5 Output: 2  Example 2:  Input: nums = [1,3,5,6], target = 2 Output: 1  Example 3:  Input: nums = [1,3,5,6], target = 7 Output: 4    Constraints:  1 <= nums.length <= 104 -104 <= nums[i] <= 104 nums contains distinct values sorted in ascending order. -104 <= target <= 104  

	# Explanation
	Here's the breakdown of the solution:

*   **Binary Search:** Utilize binary search to efficiently locate the target within the sorted array.
*   **Target Found:** If the target is found, return its index.
*   **Target Not Found:** If the target isn't found, binary search will narrow down the search space until `left` and `right` pointers cross. At this point, `left` will point to the index where the target *should* be inserted to maintain the sorted order.

*   **Runtime Complexity:** O(log n) , **Storage Complexity:** O(1)

	
	# Code
	```python
	def search_insert(nums: list[int], target: int) -> int:
    """
    Given a sorted array of distinct integers and a target value, return the index if the target is found.
    If not, return the index where it would be if it were inserted in order.
    You must write an algorithm with O(log n) runtime complexity.
    """
    left, right = 0, len(nums) - 1

    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid] < target:
            left = mid + 1
        else:
            right = mid - 1

    return left
	```
			
