LeetCode:长度最小的子数组【209】

题目描述

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。

示例:

输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。

进阶:

如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。

题目分析

  要求是连续子数组,所以我们必须定义 i,j两个指针,i 向前遍历,j 向后遍历,相当与一个滑块,这样所有的子数组都会在 [i...j] 中出现,如果 nums[i..j] 的和小于目标值 s,那么j向后移一位,再次比较,直到大于目标值 s 之后,i 向前移动一位,缩小数组的长度。遍历到i到数组的最末端,就算结束了,如果不存在符合条件的就返回 0。

  

Java题解

class Solution {
public int minSubArrayLen(int s, int[] nums) {
int i = 0;
int j =-1;
int total = 0;
int res=nums.length+1;
while(i<nums.length)
{
if(j+1<nums.length&&total<s)
{
j+=1;
total+=nums[j];
}
else{
total-=nums[i];
i++;
}
if (total >= s)
res = Math.min(res, j-i+1);
}
if(res == nums.length+1)
return 0;
return res;
}
}

  

最新文章

  1. EF – 3.EF数据查询基础(下)数据关联
  2. spark1.5.1环境搭建
  3. 第三百三十六天 how can I 坚持
  4. scanf(),fscanf的详解
  5. linux内核学习-
  6. Smarty模板引擎的使用
  7. LeetCode OJ 33. Search in Rotated Sorted Array
  8. jBPM4工作流应用开发指南
  9. zabbix 官方文档
  10. Java 8- Java 分支结构 - if…else/switch
  11. 【Amazon 必考】Amazon Leadership Principles 亚马逊领导力准则
  12. Java后台面试 常见问题
  13. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)
  14. JSP 指令
  15. CUDA 纹理的使用
  16. 我的Apache又挂了之apache错误:server&#39;s fully qualified domain name, using 127.0.0.1. Set the &#39;ServerName&#39;
  17. js 获得网页背景色和字体色
  18. c语言中怎样用scanf()读入带空格的字符串?
  19. ALSA声卡笔记2---ASoC驱动框架
  20. 什么时候必须使用UI相机? 多个相机的作用原理?

热门文章

  1. java中native方法的使用
  2. 【BIEE】BIEE 11g BI Publisher报表开发实例
  3. 数据存储之iOS断点续传
  4. Delphi中array of const应用
  5. 使Gallery时设置居左显示
  6. lua学习笔记(六)
  7. kafka eagle 使用教程
  8. oracle中的minus数据比对
  9. 在Linux中配置DNS的正确方式
  10. Project Euler:Problem 87 Prime power triples