[Algorithm] Leetcode_ 209. Minimum Size Subarray Sum

JAsmine_log·2024년 7월 22일

209. Minimum Size Subarray Sum

Given an array of positive integers nums and a positive integer target, return the minimal length of a subarray whose sum is greater than or equal to target. If there is no such subarray, return 0 instead.

Example 1:

Input: target = 7, nums = [2,3,1,2,4,3]
Output: 2
Explanation: The subarray [4,3] has the minimal length under the problem constraint.

Example 2:

Input: target = 4, nums = [1,4,4]
Output: 1

Example 3:

Input: target = 11, nums = [1,1,1,1,1,1,1,1]
Output: 0

Constraints:

  • 1 <= target <= 10^9
  • 1 <= nums.length <= 10^5
  • 1 <= nums[i] <= 10^4

Follow up:

If you have figured out the O(n) solution, try coding another solution of which the time complexity is O(n log(n)).

Code

C++

class Solution
{
public:
    int minSubArrayLen(int target, vector<int> &nums) 
    {
        int i = 0;
        int j = 0;
        int sum = 0;
        int minimum = INT_MAX;

        while (j < nums.size())
        {
            sum += nums[j];
            while (sum >= target)
            {
                sum -= nums[i];
                minimum = min(j - i + 1, minimum);
                i++;
            }
            j++;
        }
        if (minimum == INT_MAX)
        {
            return 0;
        }
        return minimum;
    }
};

Tip

Sliding window

Sliding window algorithm is a problem solving technique that transforms two nested loops into one loop. It can reduce the time complexity to O(n).

  • Sliding window array example

Reference
[1] https://builtin.com/data-science/sliding-window-algorithm

profile
Everyday Research & Development

0개의 댓글