zoukankan      html  css  js  c++  java
  • 209. Minimum Size Subarray Sum

    Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn't one, return 0 instead.

    Example: 

    Input: s = 7, nums = [2,3,1,2,4,3]
    Output: 2
    Explanation: the subarray [4,3] has the minimal length under the problem constraint.
    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). 
     
     
    class Solution {
    public:
        int minSubArrayLen(int s, vector<int>& nums) {
            int sum=0,i=0,j=0,res=nums.size()+1;
            while(j<nums.size())
            {
                sum+=nums[j++];
                while(sum>=s)
                {
                    sum-=nums[i++];
                    res=min(res,j-i+1);
                }
            }
            return res>nums.size()?0:res;
        }
    };

    经典的双指针问题.开始用的是单层for循环, 调试了很久条件总是写的不对,实在不行看了答案, 发现用的是双层循环, 确实这个很简洁, 也是非常直接的逻辑

  • 相关阅读:
    BZOJ3000 斯特林公式
    组合数学一些结论
    CSP2019-JS 游记(总结)
    Atcoder AGC1~10 problem list
    ioi2015hw
    NOI2017解题报告
    HNOI2021游记
    4月做题记录
    WC2021题解
    P4592 [TJOI2018]异或
  • 原文地址:https://www.cnblogs.com/lychnis/p/11837216.html
Copyright © 2011-2022 走看看