贵州交通建设集团有限公司网站,海外信息流推广怎么做,重庆市建设工程信息网联系电话,做电影分享网站违法吗1.题目#xff1a; 2.题解#xff1a; 2.1为什么用滑动窗口优化#xff1a; 因为元素都是大于0的 所以#xff1a;当找到大于等于x的值时#xff0c;right可以不用返回 两个指针都往后走#xff1b;因此可以使用滑动窗口优化暴力解法 2.2#xff1a;滑动窗口具体使用步… 1.题目 2.题解 2.1为什么用滑动窗口优化 因为元素都是大于0的 所以当找到大于等于x的值时right可以不用返回 两个指针都往后走因此可以使用滑动窗口优化暴力解法 2.2滑动窗口具体使用步骤 1.进窗口sum array[right]; 2.判断sum x 时出窗口 灵活更新结果满足结果后right-left1retlen 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[n1];//注意下标从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-left1 retlen){retLeft left;retRight right;retlen right-left1;//更新以便于找出最小值}//出窗口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());}
}