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

数组_长度最小的子数组

数组_长度最小的子数组

  • 一、leetcode-209
  • 二、题解
    • 1.代码
    • 2.思考


一、leetcode-209

长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其总和大于等于 target 的长度最小的
子数组
[numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

样例输入:target = 7, nums = [2,3,1,2,4,3]

样例输出:2

解释:子数组 [4,3] 是该条件下的长度最小的子数组。


二、题解

1.代码

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int ans=INT32_MAX;
        int sum=0;
        for(int i=0;i<nums.size();i++){
            sum=0;
            for(int j=i;j<nums.size();j++){
                sum+=nums[j];
                if(sum>=target){
                    ans=(j-i+1)<ans?(j-i+1):ans;
                    break;
                }
            }
        }
        return ans==INT32_MAX?0:ans;
    }
};

这个代码只能过一部分的样例,有的会超时。怎么优化?

2.思考

数组操作中另一个重要的方法:滑动窗口。

所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。

在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。

那么滑动窗口如何用一个for循环来完成这个操作呢。

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int ans=INT32_MAX;
        int sum=0;
        for(int i=0,j=0;j<nums.size();j++){
            sum+=nums[j];
            while(sum>=target){
                ans=ans<j-i+1?ans:j-i+1;
                sum-=nums[i++];
            }
        }
        return ans==INT32_MAX?0:ans;
    }
};

相关文章:

  • 1-2 gitee创建远程仓库
  • 题解:洛谷 P4054 [JSOI2009] 计数问题
  • Beszel监控Docker安装
  • 变相提高大模型上下文长度-RAG文档压缩-3.优化map-reduce(reranker过滤+社区聚类)
  • 华为云kubernetes基于keda自动伸缩deployment副本(监听redis队列长度)
  • Redis进阶使用
  • 利用ollama 与deepseek r1大模型搭建本地知识库
  • 腿足机器人之六- 前向运动学
  • 2025-02-15 禅修-若分别性,离尘无体,斯则前尘分别影事
  • RAMinit 程序编译运行考古记录
  • 【云安全】云原生- K8S API Server 未授权访问
  • PowerBI 矩阵 列标题分组显示(两行列标题)
  • 安全测试中的身份认证与访问控制深度解析
  • Redis 03章——10大数据类型概述
  • doris:异步物化视图概述
  • 基于 Docker 搭建 Elasticsearch + Kibana 环境
  • 演示synchronized锁机制用法的简单Demo
  • 网络工程师 (39)常见广域网技术
  • Typescript 【详解】配置文件 tsconfig.json
  • aws(学习笔记第二十八课) aws eks使用练习(hands on)
  • 梅花奖在上海丨陈丽俐“婺剧折戏专场”:文戏武做,武戏文唱
  • 来伊份:已下架涉事批次蜜枣粽产品,消费者可获额外补偿,取得实物后进一步分析
  • 陈宝良 高寿仙 彭勇︱明清社会的皇权、商帮与市井百态
  • 侧记|青年为何来沪创新创业?从这一天寻找答案
  • 上海“世行对标改革”的税务样本:设立全国首个税务审判庭、制定首个税务行政复议简易程序
  • 105岁八路军老战士、抗美援朝老战士谭克煜逝世