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

    一、题目

      1、审题

      

      2、分析

        求正整数数组 nums 中连续的元素和大于等于 s 的最少元素的个数。

    二、解答

      1、思路:

        方法一、

          ①、采用变量 min 记录最少元素数,初始值为 Integer.MAX_VALUE;

          ②、遍历 nums 中元素,若当前元素下标为 i 时;令变量 sum = nums[i];

          ③、再创建一个内循环,从下标 i - 1 往前遍历数组 nums,且 sum 值加上遍历经过的元素,

            当 sum >= s 时,跳出内循环,且判断 min 是否需要更新。当 i == 0 时,sum 依然小于 s,则跳出内循环。

          ④、第一层循环遍历完后,若 min 依然是 Integer.MAX_VALUE 则返回 0, 否则返回 min。

     1     public int minSubArrayLen(int s, int[] nums) {
     2     
     3         int minLen = Integer.MAX_VALUE;
     4         int sum = 0;
     5         for (int i = 0; i < nums.length; i++) {
     6             sum = nums[i];
     7             if(sum >= s)
     8                 return 1;
     9             for (int j = i - 1; j >= 0; j--) {
    10                 if((sum += nums[j]) >= s) {
    11                     minLen = Math.min(minLen, i - j + 1);
    12                     break;
    13                 }
    14             }
    15         }
    16         
    17         return minLen == Integer.MAX_VALUE ? 0 : minLen;
    18     }

      方法一、 采用两个指针。

          j 不断向后移动,i 也向后移动,sum 记录数组 nums 从下标 i 到下标 j 之间的元素和,最终返回 sum >= s 时的最小 j - i;

        public int minSubArrayLen2(int s, int[] nums) {
            
            if(nums == null || nums.length == 0)
                return 0;
            
            int i = 0, j = 0, sum = 0, min = Integer.MAX_VALUE;
            
            while(j < nums.length) {
                sum += nums[j++];
                
                while(sum >= s) {
                    min = Math.min(min, j - i);
                    sum -= nums[i++];
                }
            }
            
            return min == Integer.MAX_VALUE ? 0 : min;
        }
  • 相关阅读:
    数据挖掘-基本流程
    ArcGIS GP应用-GP模型服务发布
    ArcGIS GP应用-GP模型创建-缓冲区分析
    Hadoop2的Yarn和MapReduce2相关
    hadoop学习WordCount+Block+Split+Shuffle+Map+Reduce技术详解
    WordCount示例深度学习MapReduce过程
    数组的几种排序算法的实现
    hBase官方文档以及HBase基础操作封装类
    Hive SQL执行流程分析
    Hive SQL的编译过程
  • 原文地址:https://www.cnblogs.com/skillking/p/9881816.html
Copyright © 2011-2022 走看看