# Solving Leetcode Interviews in Seconds with AI: Search in Rotated Sorted Array


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "33" 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
	> There is an integer array nums sorted in ascending order (with distinct values). Prior to being passed to your function, nums is possibly rotated at an unknown pivot index k (1 <= k < nums.length) such that the resulting array is [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]] (0-indexed). For example, [0,1,2,4,5,6,7] might be rotated at pivot index 3 and become [4,5,6,7,0,1,2]. Given the array nums after the possible rotation and an integer target, return the index of target if it is in nums, or -1 if it is not in nums. You must write an algorithm with O(log n) runtime complexity.   Example 1: Input: nums = [4,5,6,7,0,1,2], target = 0 Output: 4 Example 2: Input: nums = [4,5,6,7,0,1,2], target = 3 Output: -1 Example 3: Input: nums = [1], target = 0 Output: -1    Constraints:  1 <= nums.length <= 5000 -104 <= nums[i] <= 104 All values of nums are unique. nums is an ascending array that is possibly rotated. -104 <= target <= 104  

	# Explanation
	Here's the solution to the rotated sorted array search problem, along with explanations and code:

*   **High-Level Approach:**
    *   Utilize Binary Search: The core idea is to adapt binary search to work on the rotated sorted array.
    *   Identify Sorted Portion: In each iteration, determine which half of the array (left or right) is sorted.
    *   Search in Sorted Portion: Check if the target lies within the sorted portion. If so, narrow down the search to that portion; otherwise, search in the other half.

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

	
	# Code
	```python
	def search(nums: list[int], target: int) -> int:
    """
    Searches for a target value in a rotated sorted array.

    Args:
        nums: The rotated sorted array.
        target: The value to search for.

    Returns:
        The index of the target if found, otherwise -1.
    """
    left, right = 0, len(nums) - 1

    while left <= right:
        mid = (left + right) // 2

        if nums[mid] == target:
            return mid

        # Check if the left side is sorted
        if nums[left] <= nums[mid]:
            if nums[left] <= target < nums[mid]:
                right = mid - 1
            else:
                left = mid + 1
        # Otherwise, the right side is sorted
        else:
            if nums[mid] < target <= nums[right]:
                left = mid + 1
            else:
                right = mid - 1

    return -1
	```
			
