zoukankan      html  css  js  c++  java
  • 和大于S的最小子数组 · Minimum Size Subarray Sum

    [抄题]:

    给定一个由 n 个正整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。

    给定数组 [2,3,1,2,4,3] 和 s = 7, 子数组 [4,3] 是该条件下的最小长度子数组。

     [暴力解法]:

    时间分析:

    空间分析:

    [思维问题]:

    1. 和 ≥ s 的最小长度子数组,和《s时j++,达到后更新j-i。再扫更大,所以此处打止。(j不用回去,否则会变成原来的i)
    2. 时,初始化为Integer.MAX_VALUE,忘了。

    [一句话思路]:

    长度不确定的窗口:boy追逐girl, girl在boy的循环中发生先量变、再质变

    [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

    [画图]:

    [一刷]:

    [二刷]:

    [三刷]:

    [四刷]:

    [五刷]:

      [五分钟肉眼debug的结果]:

    [总结]:

    长度不确定的窗口:boy追逐girl, girl在boy的循环中发生先量变、再质变

    [复杂度]:Time complexity: O(2n) Space complexity: O(n)

    boy 一共走n, girl一共也走只n,而不是每次都跟着 。同时并行而不是嵌套,故为2n

    [英文数据结构或算法,为什么不用别的数据结构或算法]:

    [关键模板化代码]:

    [其他解法]:

    [Follow Up]:

    [LC给出的题目变变变]:

    718. Maximum Length of Repeated Subarray dp这么麻烦的吗

     [代码风格] :

    public class Solution {
        /**
         * @param nums: an array of integers
         * @param s: An integer
         * @return: an integer representing the minimum size of subarray
         */
        public int minSubArrayLen(int s, int[] nums) {
            //corner case
            if (nums == null || s <= 0) {
                return -1;
            }
            //i,j in same dir
            int i = 0, j = 0;
            int sum = 0;
            int ans = Integer.MAX_VALUE;
            for (i = 0; i < nums.length; i++) {
                //accumulate
                while (j < nums.length && sum < s) {
                    sum += nums[j];
                    j++;
                }
                //change
                if (sum >= s) {
                        ans = Math.min(ans, j - i);
                    }
                //boy should go back
                sum -= nums[i];
            }
            //if no result
            if (ans == Integer.MAX_VALUE) {
                return -1;
            }
            
            return ans;
        }
    }
    View Code
  • 相关阅读:
    【SAS NOTE】OUTPUT
    【SAS NOTES】_NULL_
    【SAS NOTE】sas 9.2 安装
    【SAS NOTE】FREQ
    纯数学教程 Page 203 例XLI (1)
    纯数学教程 Page 203 例XLI (3)
    纯数学教程 Page 203 例XLI (2)
    Prove Cauchy's inequality by induction
    纯数学教程 Page 325 例LXVIII (15) 调和级数发散
    纯数学教程 Page 325 例LXVIII (15) 调和级数发散
  • 原文地址:https://www.cnblogs.com/immiao0319/p/8503790.html
Copyright © 2011-2022 走看看