当前位置: 首页 > article >正文

算法——长度最小的子数组(leetcode209)

首先题目明确给出一个含有n个正整数的数组和一个目标值我们需要求出数组中下标连续的子数组元素之和大于等于目标值的最小子数组并返回。

明确题目大意后我们最容易想到的还是用两层for循环(外层for循环确定子数组的起始位置,内层for循环来确定终止位置并枚举起始位置至终止位置的数组的各种子数组的情况)然后筛选出符合题意的长度最小子数组并返回这种解法虽然思路较为简单但时间复杂度较高如果想要进一步优化时间复杂度的话我们可以使用滑动窗口的思想也就是双指针解法

双指针我们只需要使用一层for循环即可但要明确for循环中自增变量j的含义如果我们将j表示为起始位置的话那么求长度最小的子数组还是要遍历后续元素实质上和双层for循环是相似的所以我们将j定义为终止位置的指针,i表示起始位置的指针如果i至j这个子数组区间内的元素和大于等于目标值那么起始位置指针+1向右移动同时取符合条件的最小子数组的长度如此当for循环结束之后我们就可以得到长度最小的子数组长度并返回

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int sum=0;
        int result=Integer.MAX_VALUE;
        int i=0;
        for (int j = 0; j < nums.length; j++) {
            sum+=nums[j];
            while(sum>=target){
                if(result>j-i+1){
                    result=j-i+1;
                }
                sum-=nums[i];
                i++;
            }
        }
        return result==Integer.MAX_VALUE?0:result;
    }
}


http://www.kler.cn/a/396771.html

相关文章:

  • 使用Python实现深度学习模型:智能食品配送优化
  • 北京大学c++程序设计听课笔记101
  • Ubuntu中使用纯命令行进行Android开发
  • 深入理解 source 和 sh、bash 的区别
  • Vue3中一级导航栏的吸顶导航交互以及Pinia优化重复请求
  • 华为云前台展示公网访问需要购买EIP,EIP流量走向
  • 新版Apache Tomcat ⽬目录文件讲解(笔记)
  • git 常用命令大全
  • datawhale11月组队学习 模型压缩技术3:2:4结构稀疏化BERT模型
  • 【时间之外】IT人求职和创业应知【34】-人和机器人,机器人更可靠
  • 常用List工具类(取交集、并集等等)
  • Python 数据可视化pilot
  • Spring Boot编程训练系统:用户体验设计与实现
  • 【C++】string模拟实现
  • SQL练习(2)
  • Linux篇(用户管理命令)
  • Python 桌面应用开发:使用 Tkinter 创建 GUI 应用程序
  • QT定时器
  • iOS swift开发--- 加载PDF文件并显示内容
  • 聊聊Flink:Flink的运行时架构
  • 【含开题报告+文档+PPT+源码】基于Spring Boot智能综合交通出行管理平台的设计与实现
  • 除了 TON, 哪些公链在争夺 Telegram 用户?数据表现如何?
  • 【IEEE出版 | 中国石油大学(华东)主办】第六届信息与计算机前沿术国际学术会议(ICFTIC 2024,12月13-15日)
  • 两部手机的IP地址:是否会相同?全面探讨
  • K8S 查看pod节点的磁盘和内存使用情况
  • 【364】基于springboot的高校科研信息管理系统