首页 > 编程语言 >数据结构与算法 数组篇之长度最小的子数组

数据结构与算法 数组篇之长度最小的子数组

时间:2024-07-19 15:27:35浏览次数:14  
标签:窗口 target int 算法 result 数组 滑动 数据结构

问题描述:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

题目链接:. - 力扣(LeetCode)

解题思路:双指针,亦或者是滑动窗口(有点难)

滑动窗口法是数组中另一种十分常用的算法,主要需要考虑三个方面。209. 长度最小的子数组(滑动窗口法)_result = result < sublength ? result : sublength;-CSDN博客

(1) 滑动窗口内的内容指什么?

(2) 滑动窗口的起始位置如何移动?

(3) 滑动窗口的终止位置如何移动? 

先要搞清楚指针代表的是数组头还是尾,其次最重要的是条件判断是用if还是while,对于滑动窗口来说,一般采用while。

由于这道题目解法叫做滑动窗口,那么刷题的小伙伴应该也记得一道叫做滑动窗口最大值的题目,该题的题目链接如下:. - 力扣(LeetCode)

那么我就在想这道题能不能也用队列的思想去做一做,后来果然可行:

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int sum=0;
        Deque<Integer> deque=new LinkedList();
        int res=Integer.MAX_VALUE;
        for(int i=0;i<nums.length;i++){
            sum=sum+nums[i];
            deque.offer(nums[i]);
            while(sum>=target){
            res=res<deque.size()?res:deque.size();
            sum=sum-deque.pollFirst();
            }
        }
        return res==Integer.MAX_VALUE?0:res;
    }
}

标签:窗口,target,int,算法,result,数组,滑动,数据结构
From: https://blog.csdn.net/adcdehjgy/article/details/140504085

相关文章

  • Gale-Shapley 算法
    挺简单的一个算法,用于解决稳定婚姻问题。稳定婚姻问题:一些男人和一些女人,每个男人都有对女人的排名,每个女人亦有,求一组最优秀的匹配。考虑维护一个落单男人的队列,初始全部落单。每次取出队头并按该男人的眼光枚举每一个女人进行配对,如果这个女人落单,或者这个女人目前对象劣于当......
  • js 加密算法
    (1)md5摘要算法npminstallcrypto-jsconst CryptoJS = require('crypto-js');//原始数据const data = '123456';//生成MD5摘要const md5Digest = CryptoJS.MD5(data).toString();console.log(md5Digest);(2)AES加密constCryptoJS=require("crypto-j......
  • EXCEL:按有序列表对数组进行排序,无需自定义列表
    我有一张邮政编码表,其中包含发送到每个邮政编码的货件数量。我想按特定顺序按邮政编码对这个数组进行排序,我将其放在第二个列表中。我不想按客户数量或邮政编码的数字顺序排序,而是按这个专门排名的列表排序。我无法使用自定义排序功能,因为我的列表对于此功能来说太长了。......
  • AI人工智能深度学习算法:智能深度学习代理的环境感知与数据采集机制
    AI人工智能深度学习算法:智能深度学习代理的环境感知与数据采集机制作者:禅与计算机程序设计艺术/ZenandtheArtofComputerProgramming1.背景介绍1.1问题的由来随着人工智能技术的迅速发展,深度学习算法因其强大的模式识别和预测能力而被广泛应用。特别是在智能代......
  • 算法刷题笔记 字符串哈希(C++实现)
    文章目录题目描述基本思路实现代码题目描述给定一个长度为n的字符串,再给定m个询问,每个询问包含四个整数l1,r1,l2,r2,请你判断[l1,r1]和[l2,r2]这两个区间所包含的字符串子串是否完全相同。字符串中只包含大小写英文字母和数字。输入格式第一行包含整数n和m,表示字符......
  • 算法刷题笔记 八数码(C++实现)
    文章目录题目描述基本思路实现代码题目描述在一个3×3的网格中,1∼8这8个数字和一个x恰好不重不漏地分布在这3×3的网格中。例如:123x46758在游戏过程中,可以把x与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下......
  • 代码随想录算法训练营第30天 | 贪心算法 2: 122.买卖股票的最佳时机II、55. 跳跃游戏
    代码随想录算法训练营第30天|贪心算法2:122.买卖股票的最佳时机II、55.跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和122.买卖股票的最佳时机IIhttps://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/代码随想录https://programmerca......
  • 解析json数组 , Java
    使用JSONObject1、需要解析的json串{"retCode":0,"retMSg":"成功","data":[{"name":"李雷","id":"001","score":{&q......
  • 代码随想录算法训练营第29天 | 贪心算法1:455.分发饼干、376.摆动序列、53.最大子序和
    代码随想录算法训练营第29天|贪心算法1:455.分发饼干、376.摆动序列、53.最大子序和贪心算法基础理论https://programmercarl.com/贪心算法理论基础.html455.分发饼干https://leetcode.cn/problems/assign-cookies/description/代码随想录https://programmercarl.com/0455......
  • 算法篇 滑动窗口 leetCode 水果成篮
    水果成蓝1.题目描述2.图形分析2.1原理解释2.2怎么想出使用滑动窗口2.3图形分析3.代码演示1.题目描述2.图形分析2.1原理解释2.2怎么想出使用滑动窗口2.3图形分析3.代码演示......