每日一题---dd爱框框(Java中输入数据过多)

dd爱框框

实例:

输入:

10 20
1 1 6 10 9 3 3 5 3 7

 输出:

3 5

这道题要解决Java中输入的数过多时,时间不足的的问题。

应用这个输入模板即可解决:

Java中输入大量数据

import java.util.*;
import java.io.*;public class Main {public static void main(String[] args) throws IOException {Read in = new Read();}
}class Read {StringTokenizer st = new StringTokenizer("");BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String next() throws IOException{while(!st.hasMoreTokens()) {st = new StringTokenizer(bf.readLine());}return st.nextToken();}String nextLine()  throws IOException{return bf.readLine();}int nextInt() throws IOException{return Integer.parseInt(next());}Double nextDouble() throws IOException{return Double.parseDouble(next());}long nextLong() throws IOException{return Long.parseLong(next());}
}

稍微解释一下代码的作用,通过BufferedReader更改字节流输入字符流输入,加速快字符的输入

再通过StringTokenizer将输入的字符串进行切割,用于下一步的转换。

对于nextLine()这个方法由于输入时是String得到的也是String,就可以直接返回BufferedReader

中读取的字符串。

而对于其他比如nextInt()需要进行切割后用Integer.parseInt()转化,所以统一把切割这一步封装为next()。

st.hasMoreTokens()这个用于读取多行,其他的就记住就行。

封装完成后的使用方法与Scanner一致。

接下来讲解这道题:

题解:

解法一:暴力解法

我做题如果不是熟悉的题,基本第一时间还是想到的暴力遍历,然后再优化。

对于这道题来说,把所有情况统计下来,还要兼顾长度相同时,取最小的l的情况,无疑是不能通过的。那么如何进行优化呢?

有了之前这种题的经验:数组中两个字符串的最小距离,我想到继续用临时变量取存储,然后再不断更新,因此,我们现在就尝试寻找满足这样的条件是什么。

要存储那个变量呢?结果要输出左右下标,那么这个肯定优先考虑,那么还有其他的需要考虑吗,意识到要遍历所有的情况,我们可以定义两套变量,一套用于遍历所有情况,一套用于存储输出结果,并且结合题目还要计算数组和,所以这个也要定义。

下面要考虑什么时候更新数据,当遍历到的数据和满足 >x时,判断是否小于输出结果记录的值,然后更新,有点像双指针的思路,从头开始遍历时,如果和大于x后就两头向内坍缩,但由于是向右遍历的,那么右边的就可以不用向回走(因为题目中要求的x一定是大于0的),比如1,2,3这一组数,如果x=5,那么左边就可以减少一个,但是右边就没必要减,如果右边也可以减,那么这组遍历在1,2就会因为>x而停下。

代码:

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();int x = in.nextInt();int[] arr = new int[n+1];for(int i = 1; i <= n; i++) {arr[i] = in.nextInt();}//记录遍历数据与输出数据int l = 1, retl = -1;int r = 1, retr = -1;int count = 0;int ret = n;while(r <= n) {//统计和count += arr[r];while(count >= x) {//注意这个等号,恰好相等时也要更新//向内坍缩  双指针if(r - l + 1 < ret) {//保证输出的是l最小的retl = l;retr = r;ret = r-l+1;}count -= arr[l++];}r++;}System.out.println(retl + " " + retr);}
}class Read {StringTokenizer st = new StringTokenizer("");BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String next() throws IOException{while(!st.hasMoreTokens()) {st = new StringTokenizer(bf.readLine());}return st.nextToken();}String nextLine()  throws IOException{return bf.readLine();}int nextInt() throws IOException{return Integer.parseInt(next());}Double nextDouble() throws IOException{return Double.parseDouble(next());}long nextLong() throws IOException{return Long.parseLong(next());}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis部署架构

一、redis多实例部署 实例1 安装目录&#xff1a;/app/6380 数据目录&#xff1a;/app/6380/data 实例2 安装目录&#xff1a;/app/6381 数据目录&#xff1a;/app/6381/data 1、创建实例安装目录 2、拷贝实例的配置文件 3、编辑实例的配置文件 第…

vscode python相对路径的问题

vscode python相对路径的问题 最近使用使用vscode连接wsl2写python时&#xff0c;经常遇到找不到包中的方法的问题&#xff0c;最终发现vscode在执行python代码时目录不是从当前python文件开始算起&#xff0c;而是从当前工作区的目录开始算起&#xff0c;比如说我打开的是/ho…

面试vue2开发时怎么加载编译速度(webpack)

可以输入命令获取默认 webpack 设置 vue inspect > set.js 1.使用缓存 configureWebpack: {cache: {type: filesystem, // 使用文件系统缓存类型buildDependencies: {config: [__filename] // 缓存依赖&#xff0c;例如webpack配置文件路径}}}, 2.启用 vue-loader (测试明…

uv命令介绍(高性能Python包管理工具,旨在替代pip、pip-tools和virtualenv等传统工具)

文章目录 **主要功能**1. **快速安装和管理 Python 包**2. **生成和管理锁文件 (requirements.lock)**3. **创建虚拟环境**4. **与 poetry 兼容** **核心优势**1. **极快的速度**&#xff1a;基于 Rust 实现&#xff0c;利用多线程和缓存大幅加速依赖解析。2. **轻量且独立**&a…

企业数据管理的成本与效率革命

在数字经济时代&#xff0c;企业每天产生的数据量正以指数级速度增长。IDC预测&#xff0c;到2025年全球数据总量将突破180 ZB。面对海量数据存储需求和有限的IT预算&#xff0c;企业逐渐意识到&#xff1a;将每字节数据都存储在昂贵的高性能存储设备上&#xff0c;既不经济也不…

深度学习-服务器训练SparseDrive过程记录

1、cuda安装 1.1 卸载安装失败的cuda 参考&#xff1a;https://blog.csdn.net/weixin_40826634/article/details/127493809 注意&#xff1a;因为/usr/local/cuda-xx.x/bin/下没有卸载脚本&#xff0c;很可能是apt安装的&#xff0c;所以通过执行下面的命令删除&#xff1a; a…

洛谷每日1题-------Day20__P1401 [入门赛 #18] 禁止在 int 乘 int 时不开 long long

题目描述 在比赛中&#xff0c;根据数据范围&#xff0c;分析清楚变量的取值范围&#xff0c;是非常重要的。int 类型变量与 int 类型变量相乘&#xff0c;往往可能超出 int 类型可以表示的取值范围。 现在&#xff0c;给出两个 int 类型变量 x,y 及其取值范围&#xff0c;请…

3.15刷题

P6337 [COCI 2007/2008 #2] CRNE - 洛谷 #include<bits/stdc.h> using namespace std; int main(){int n;cin>>n;//横加竖 最大。n/2,n/21if(n%20){cout<<(n/21)*(n/21);}else cout<<(n/22)*(n/21);return 0; }P6338 [COCI 2007/2008 #2] PRVA - 洛…

Browser Copilot 开源浏览器扩展,使用现有或定制的 AI 助手来完成日常 Web 应用程序任务。

一、软件介绍 文末提供源码和开源扩展程序下载 Browser Copilot 是一个开源浏览器扩展&#xff0c;允许您使用现有或定制的 AI 助手来帮助您完成日常 Web 应用程序任务。 目标是提供多功能的 UI 和简单的框架&#xff0c;以实现和使用越来越多的 copilots&#xff08;AI 助手&…

selenium等待

通常代码执行的速度⽐页⾯渲染的速度要快,如果避免因为渲染过慢出现的⾃动化误报的问题呢?可以使⽤selenium中提供的三种等待⽅法: 1. 隐式等待(Implicit Wait) 隐式等待适用于全局,它告诉 WebDriver 在查找元素时等待一定的时间,直到元素出现。 如果超时,WebDriver 不…

解锁C++:指针与数组、字符串的深度探秘

目录 一、指针与数组:亲密无间的伙伴 1.1 指针是数组的 “快捷通道” 1.2 数组名与指针:微妙的差别 1.3 动态数组:指针大显身手 二、指针与字符串:千丝万缕的联系 2.1 字符指针与 C 风格字符串 2.2 指针与 std::string 类 2.3 字符串常量与指针 三、指针在数组和字…

20250315-OpenAI-AgentSDK实验

凑热闹。可以用GLM跑。 这里暂时用GLM底座“魔鬼修改”&#xff0c;代码库仅供参考&#xff08;共同进步吧&#xff09; openai-agents-python-glm: 基于GLM底座运行SDK&#xff0c;学习实验SDK内的mAGT功能。https://gitee.com/leomk2004/openai-agents-python-glm 自言自语&a…

Qt QML实现弹球消砖块小游戏

前言 弹球消砖块游戏想必大家都玩过&#xff0c;很简单的小游戏&#xff0c;通过移动挡板反弹下落的小球&#xff0c;然后撞击砖块将其消除。本文使用QML来简单实现这个小游戏。 效果图&#xff1a; 正文 代码目录结构如下&#xff1a; 首先是小球部分&#xff0c;逻辑比较麻…

04_Linux驱动_05_pinctrl子系统

以下代码都在pinctrl相关的驱动函数和设备树中 pinctrl-rockchip.c驱动&#xff0c;对应的是那个&#xff08;那些&#xff09;设备树呢&#xff1f; 答案&#xff1a;通过.compatible "rockchip,rk3568-pinctrl"连接到rk3568.dtsi根节点下的pinctrl节点 一&#…

Python的那些事第四十五篇:继承自Nose的测试框架Nose2

Nose2:继承自Nose的测试框架 摘要 本文深入探讨了Nose2这一继承自Nose的测试框架。在软件开发过程中,测试是确保代码质量和稳定性的重要环节,而测试框架为测试工作的开展提供了有力支持。Nose2作为Nose的继承者,在保留Nose优势的基础上进行了诸多改进和扩展,为Python测试…

如何通过 Airbyte 将数据摄取到 Elasticsearch

作者&#xff1a;来自 Elastic Andre Luiz Airbyte 是一个数据集成工具&#xff0c;可自动化并可扩展地将信息从各种来源传输到不同的目的地。它使你能够从 API、数据库和其他系统提取数据&#xff0c;并将其加载到 Elasticsearch 等平台&#xff0c;以实现高级搜索和高效分析。…

RBAC 模型的简单实现

RBAC 模型基本介绍 RBAC&#xff08;Role-Based Access Control&#xff0c;基于角色的访问控制&#xff09;是一种广泛应用的权限管理模型。它的核心思想是通过角色来管理权限&#xff0c;而不是直接分配权限给用户。用户被赋予一个或多个角色&#xff0c;而每个角色拥有不同…

数据结构---堆栈和列

一、堆栈 1.栈堆&#xff1a;具有一定操作约束的线性表&#xff1b;&#xff08;只在一端做插入删除&#xff09; 2.栈的顺序存储结构&#xff1a; 由一个一维数组和一个记录栈顶元素位置的变量组成。定义方式如下&#xff1a; 3.入栈操作&#xff1a; 注意&#xff1a;&…

2023 年全国职业院校技能大赛(中职组)移动应用与开发赛项 赛题第十套

2023 年全国职业院校技能大赛&#xff08;中职组&#xff09;移动应用与开发赛项 赛题第十套&#xff09; 移动应用与开发赛项竞赛模块 A&#xff1a;移动应用界面设计任务 1 环保中心界面设计&#xff08;7.5 分&#xff09;任务 2&#xff1a;首页界面设计&#xff08;7.5 分…

FPGA为何要尽量减少组合逻辑的使用

在FPGA设计中&#xff0c;组合逻辑的使用确实需要谨慎&#xff0c;尤其是要尽量减少它的复杂性。这并不是因为组合逻辑本身不好&#xff0c;而是因为它在实际应用中容易引发一系列问题&#xff0c;而这些问题往往与FPGA的设计哲学和硬件特性相冲突。让我从几个关键点来和你聊聊…