# Solving Leetcode Interviews in Seconds with AI: Maximum Score of a Good Subarray


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "1793" 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
	> You are given an array of integers nums (0-indexed) and an integer k. The score of a subarray (i, j) is defined as min(nums[i], nums[i+1], ..., nums[j]) * (j - i + 1). A good subarray is a subarray where i <= k <= j. Return the maximum possible score of a good subarray.   Example 1:  Input: nums = [1,4,3,7,4,5], k = 3 Output: 15 Explanation: The optimal subarray is (1, 5) with a score of min(4,3,7,4,5) * (5-1+1) = 3 * 5 = 15.   Example 2:  Input: nums = [5,5,4,5,4,1,1,1], k = 0 Output: 20 Explanation: The optimal subarray is (0, 4) with a score of min(5,5,4,5,4) * (4-0+1) = 4 * 5 = 20.    Constraints:  1 <= nums.length <= 105 1 <= nums[i] <= 2 * 104 0 <= k < nums.length  

	# Explanation
	*   **Sliding Window Expansion:** Start with a window centered at index `k` and expand it outwards.
*   **Maintain Minimum:** Keep track of the minimum value within the current window.
*   **Update Maximum Score:** Update the maximum score as the window expands, calculating the score based on the current minimum and window size.

*   **Runtime Complexity:** O(n), where n is the length of the input array. **Storage Complexity:** O(1).

	
	# Code
	```python
	def maximumScore(nums, k):
    n = len(nums)
    left = k
    right = k
    min_val = nums[k]
    max_score = nums[k]

    while left > 0 or right < n - 1:
        if left == 0:
            right += 1
        elif right == n - 1:
            left -= 1
        elif nums[left - 1] < nums[right + 1]:
            right += 1
        else:
            left -= 1

        min_val = min(min_val, nums[left], nums[right])
        max_score = max(max_score, min_val * (right - left + 1))

    return max_score
	```
			
