博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
209. Minimum Size Subarray Sum
阅读量:6307 次
发布时间:2019-06-22

本文共 1554 字,大约阅读时间需要 5 分钟。

一、题目

  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;    }

 

转载于:https://www.cnblogs.com/skillking/p/9881816.html

你可能感兴趣的文章
命名空间和模块化编程 - C++快速入门39
查看>>
结构化程序设计03 - 零基础入门学习Delphi12
查看>>
今天才知道怎么插入代码!!!!!!!!!
查看>>
D2007在64位Win7出现 delphi 2007 assertion failure thread32.cpp 的解决办法
查看>>
STM32的TAMPER-RTC管脚作为Tamper的使用[转]
查看>>
[记]一个逐步“优化”的范例程序
查看>>
2012-01-09_2
查看>>
Visual Studio 2015 开发MVC4出现错误
查看>>
MongoDB 学习笔记之 批处理
查看>>
orcale 之 存储过程
查看>>
A程序是B程序的输入
查看>>
java基础数组(带基础排序法)
查看>>
[20180316]理解db file parallel read等待事件.txt
查看>>
文件系统02 - 零基础入门学习Delphi35
查看>>
8.转型
查看>>
php类中调用array_walk()函数
查看>>
在线一键生成安卓证书keystore文件
查看>>
GITHUB(2.1-2.5)Git的导入
查看>>
判断奇偶
查看>>
android NDK 编译hellojni 例子文件
查看>>