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

滑动窗口->dd爱框框

1.题目:

 

 

2.题解:

2.1为什么用滑动窗口优化:

因为元素都是大于0的

所以:当找到大于等于x的值时,right可以不用返回

两个指针都往后走;因此可以使用滑动窗口优化暴力解法 

 

2.2:滑动窗口具体使用步骤:

1.进窗口:sum += array[right];

2.判断:sum >= x 时出窗口

    灵活更新结果(满足结果后)right-left+1<retlen

3.出窗口:sum -= array[left];


 

图解:


代码:这里注意使用了一个读取模板,不让Scanner输入会超时

 

import java.util.*;
import java.io.*;public class Main {public static void main(String[] args) throws IOException {Read in = new Read();int n = in.nextInt(), x = in.nextInt();int[] array = new int[n+1];//注意下标从1开始for(int i = 1; i <= n; i++){array[i] = in.nextInt();}int left = 1;int right = 1;int sum = 0;int retlen = n;int retLeft = -1;int retRight = -1;while(right <= n){//进窗口sum += array[right];//判断while(sum >= x){//更新结果if(right-left+1 < retlen){retLeft = left;retRight = right;retlen = right-left+1;//更新以便于找出最小值}//出窗口sum -= array[left++]; }right++;}System.out.print(retLeft +" " +retRight);}
}class Read // 自定义快速读入
{//字符串截取StringTokenizer st = new StringTokenizer("");//1.字节流->字符流:new InputStreamReader(System.in)//2.带内存缓冲区的字符流:BufferedReaderBufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String next() throws IOException{while(!st.hasMoreTokens()){///读内存缓冲区里的一行数据:bf.readLine()st = new StringTokenizer(bf.readLine());}//获取每一个截取的字符串return st.nextToken();}//转化为自己想要的类型String nextLine() throws IOException{return bf.readLine();}int nextInt() throws IOException{return Integer.parseInt(next());}long nextLong() throws IOException{return Long.parseLong(next());}double nextDouble() throws IOException{return Double.parseDouble(next());}
}

http://www.lryc.cn/news/450748.html

相关文章:

  • Python从入门到高手4.1节-掌握条件控制语句
  • 使用Qt实现实时数据动态绘制的折线图示例
  • 【人人保-注册安全分析报告-无验证方式导致安全隐患】
  • Redis6 多线程模型
  • Python的异步编程
  • 初识Linux · 进程等待
  • 面向对象建模
  • MetaJUI v0.4 遇到的一些问题及解决办法记录
  • 从零开始学习OMNeT++系列第二弹——新建一个OMNeT++的工程
  • 【Android】布局优化—include,merge,ViewStub的使用方法
  • 传奇外网架设教程带图文解说—Gee引擎
  • MySQL | excel数据输出insert语句
  • 足球青训俱乐部管理:Spring Boot技术驱动
  • 一次实践:给自己的手机摄像头进行相机标定
  • 【docker学习】Linux系统离线方式安装docker环境方法
  • vscode开发uniapp安装插件指南
  • Elasticsearch7.7.1集群不能相互发现的问题解决以及Elasticsearch7.7.1安装analysis-ik中文分词插件的应用
  • 蓝牙Mesh介绍
  • Qt 窗口中鼠标点击事件的坐标探讨
  • 服务器虚拟化的全面指南
  • Linux启动mysql报错
  • 基于大数据的二手房价数据可视化系统
  • C++模拟实现vector容器【万字模拟✨】
  • 论文笔记:LAFF 文本到视频检索的新基准
  • iSTFT 完美重构的条件详解
  • SSH(安全外壳协议)可以基于多种加密算法
  • Navicat 工具 下载安装
  • 家用高清投影仪怎么选?目前口碑最好的投影仪推荐
  • 阿里云盾同步漏洞之限制请求数
  • docker安装kafka-manager