首页 > 其他分享 >力扣209(2)——滑动窗口?!快慢指针的pro版罢了

力扣209(2)——滑动窗口?!快慢指针的pro版罢了

时间:2025-01-18 22:33:00浏览次数:3  
标签:窗口 min 209 pro 力扣 int 数组 sum 指针

题目及暴力法

在我的这篇博客,有兴趣的可以移步到这里:力扣209题长度最小的子数组

这次给出一种新解法

滑动窗口法

class mian{
        public int min(int target,int[] nums){
             //滑动窗口法,快慢指针的pro版
            int n=nums.length;
            int min=n+1;
            int l=0;
            int sum=0;
            for(int r=0;r<n;r++){
                sum +=nums[r];
                while(sum>=target){
                    min=Math.min(min,r-l+1);
                    sum -=nums[l];
                    l++;
                }
            }
            return min==n+1?0:min;
    }
}

做题思路解释

我看到很多大佬写的解法上来把min设置成什么最大值,我不大看的懂,但我知道可以把min设置成一个不可能的数也就是数组长度加一,如果min没有被下面写的代码改变最后仍然是我们赋值的n+1就说明这个数组没有满足条件的子数组,我们就要返回0;不然则返回改变后的min。

而这里的快指针r代表的就是子数组的结束位置,慢指针l代表的是子数组的开始位置 ,用sum记录子数组相加之和,当sum大于等于目标值时,我们就可以记录这时候的子数组个数,并让和减掉子数组的开始位置。这里用人话解释就是先找到满足题目的一串子数组窗口,一旦找到就说明我们的起始位置要继续向前缩减,窗口要向前移动了。要通过新的起始位置去判断子数组的终止位置。

共勉!

标签:窗口,min,209,pro,力扣,int,数组,sum,指针
From: https://blog.csdn.net/suibiansa_/article/details/145142031

相关文章

  • Toyota Programming Contest 2025(AtCoder Beginner Contest 389)
    A-9x9题意:给你一个长度为\(3\)的乘法式,求答案。直接求即可。点击查看代码voidsolve(){std::strings;std::cin>>s;std::cout<<(s[0]-'0')*(s[2]-'0')<<"\n";}B-tcaF题意:求一个\(n\),使得\(n!=x\)。模拟即可。点......
  • Profibus DP转Modbus TCP协议转换网关模块功能详解
    ProfibusDP和ModbusTCP是两种不同的工业现场总线协议,ProfibusDP常用于制造业自动化领域,而ModbusTCP则在工业自动化和楼宇自动化等领域广泛应用。实现ProfibusDP转ModbusTCP功能,通常需要特定的网关设备,以下为你详细介绍:捷米JM-DPM-TCP网关模块这......
  • 【2017-2025】Adobe Premiere Pro(简称PR)专业视频编辑软件下载
    AdobePremierePro软件简介AdobePremierePro(简称PR)是由Adobe公司开发的一款专业视频编辑软件,广泛应用于电影制作、电视播出和网络视频的制作。该软件以其强大的编辑功能和灵活的工作流程,在业界中享有盛誉。无论是专业影视制作人还是业余爱好者,PremierePro都能满足他们的......
  • node_exporter 集成Prometheus+Grafana
    一、配置Prometheus采集nano/root/apisix-docker/example/prometheus_conf/prometheus.yml========================末尾添加一段===================-job_name:"nodeexporter"scrape_interval:5smetrics_path:"metrics"static_configs:......
  • Nginx proxy_pass 的一个注意点
    原文:Nginx中proxy_pass的作用以及注意事项格式proxy_pass格式:proxy_passURL。proxy_passhttp://www.xxx.com/;proxy_passhttp://192.168.200.101:8080/uri;proxy_passunix:/tmp/www.sock;注意假设Nginx服务器的域名为www.xxx.com,后端服务器为192.168.1.10。......
  • 基于springboot头条文章管理系统[编号:project44558]
    收藏关注不迷路!!......
  • Vue 3 中的 Provide 和 Inject 是怎么工作的?
    Vue3中的Provide和Inject是怎么工作的?在Vue3中,Provide和Inject是一对用于组件间数据传递的API,通常用于父组件向其子组件传递数据,但并不通过props的方式。这种设计使得我们可以更灵活地管理和组织组件中的状态,特别是当组件层级较深时,避免了逐层传递props的问题。本文......
  • Prometheus +VictoriaMetrics+Granafa安装部署
    测试环境prometheus-2.54.1.linux-amd64.tar.gz下载地址:https://www.prometheus.io/download/https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gznode_exporter-1.8.2.linux-amd64.tar.gz下载地址:https://github.c......
  • 在js中attribute和property的区别是什么?
    在JavaScript和前端开发中,HTML元素的"attributes"和"properties"经常会被提及,它们虽然相关,但有着明显的区别。定义:Attributes:是定义在HTML标签中的特性(例如,<inputtype="text"value="hello">中的type和value就是attributes)。它们总是在HTML源代码中可见,并且通常用于初始化元......
  • 图解Git——分布式Git《Pro Git》
    分布式工作流程CentralizedWorkflow(集中式工作流)所有开发者都与同一个中央仓库同步代码,每个人通过拉取、提交来合作。如果两个开发者同时修改了相同的文件,后一个开发者必须在推送之前合并其他人的更改。Integration-ManagerWorkflow(集成管理者工作流)每个开发者拥有......