博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客网编程OJ输入输出的加速版(缓冲)
阅读量:4113 次
发布时间:2019-05-25

本文共 4812 字,大约阅读时间需要 16 分钟。

升级版:Buffer和Stream

1.输入:第一行的第一个数字表示第二行数组的长度

7 6
1 2 3 4 5 6 7

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));String line = input.readLine();// 读取第一行数据String[] str = line.trim().split(" ");int n = Integer.parseInt(str[0]);int v = Integer.parseInt(str[1]);line = input.readLine(); // 读取第二行数据s = line.trim().split(" ");// 创建一个int型的数组用来储存第二行的个数字int[] nums = new int[n];for (int i = 0; i < n; i ++) {
nums[i] = Integer.parseInt(s[i]);} // 测试输入是否正确for (int num: nums) {
System.out.print(num + " "); }

2.二叉树的前中后序遍历

第一行输入两个整数 n 和 root,n表示二叉树的总节点数,root表示树的根节点。接下来 n 行每行三个整数 fa,lch,rch,fa的左儿子为lch,右儿子为rch。import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main {
//第一步:定义树结点 private static class TreeNode{
TreeNode left; TreeNode right; int val; public TreeNode(int val) {
this.val = val; left = null; right = null; } } //第二步:创建一个树的结点 private static TreeNode createTreeCore(BufferedReader in) throws Exception{
int[] nodes = getIntArray(in.readLine()); //把一行转为整数 TreeNode node = new TreeNode(nodes[0]);//数组中第一个数是根节点 //通过递归确定了层数 if (nodes[1] != 0) node.left = createTreeCore(in);//左孩子 if (nodes[2] != 0) node.right = createTreeCore(in); //右孩子 return node; } //把接收到的字符串转换成整数 private static int[] getIntArray(String str) {
String[] temp = str.split(" "); int[] result = new int[temp.length]; for (int i = 0; i < temp.length; i++) {
result[i] = Integer.parseInt(temp[i]);} return result; } public static void main(String[] args) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //将第一次换行符前的所有输入以空格分开并保存成字符串的形式 String[] strings = bf.readLine().split(" "); StringBuilder sb = new StringBuilder();//作为结果的输出流 TreeNode treeNode = createTreeCore(bf); //创建树 preOrder(treeNode,sb); //前序遍历 //因为在前序遍历时会多添加一个空格,因此这里最后一个空格不能读取 System.out.println(sb.substring(0,sb.length()-1)); sb.delete(0,sb.length());//清空 innerOrder(treeNode,sb);//中序遍历 System.out.println(sb.substring(0,sb.length()-1)); sb.delete(0,sb.length()); reviewOrder(treeNode,sb); System.out.println(sb.substring(0,sb.length()-1)); } //前序遍历 private static StringBuilder preOrder(TreeNode treeNode,StringBuilder sb){
if (treeNode==null) return null; sb.append(treeNode.val+" "); preOrder(treeNode.left,sb); preOrder(treeNode.right,sb); return sb; } //中序遍历 private static StringBuilder innerOrder(TreeNode treeNode,StringBuilder sb){
if (treeNode==null) return null; innerOrder(treeNode.left,sb); sb.append(treeNode.val).append(" ");//注意空格 innerOrder(treeNode.right,sb); return sb; } private static StringBuilder reviewOrder(TreeNode treeNode,StringBuilder sb){
if (treeNode==null) return null; reviewOrder(treeNode.left,sb); reviewOrder(treeNode.right,sb); sb.append(treeNode.val); sb.append(" "); return sb; }}

3.安置路灯题

输入:输入的第一行包含一个正整数t(1 <= t <= 1000), 表示测试用例数
接下来每两行一个测试数据, 第一行一个正整数n(1 <= n <= 1000),表示道路的长度。
第二行一个字符串s表示道路的构造,只包含’.‘和’X’。
输出:对于每个测试用例, 输出一个正整数表示最少需要多少盏路灯。

public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String sa = bf.readLine(); int ca = Integer.valueOf(sa);// 转化包装类 for(int i=0; i

最后附比较有特点的一道2019网易游戏.会话列表题

输入的第一行为一个正整数T(T<=10),表示测试数据组数。
接下来有T组数据。每组数据的第一行为一个正整数N(1<=N<=200),表示接收到信息的次数。第二行为N个正整数,按时间从先到后的顺序表示接收到信息的会话id。会话id不大于1000000000。
输出描述:对于每一组数据,输出一行,按会话列表从上到下的顺序,输出会话id。
相邻的会话id以一个空格分隔,行末没有空格。

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(bf.readLine());//String对象转换为Integer对象 for (int i = 0; i < n; i++) {
int m = Integer.parseInt(bf.readLine()); System.out.println(getDialogue(bf.readLine(),m)); } } //用一个HashSet保存ID,做一个判断作用,从后往前遍历,如果set不包含该id,就添加进去。 private static String getDialogue(String s, int m) {
StringBuilder sb = new StringBuilder(); HashSet
set = new HashSet<>(); String[] ids = s.split(" "); for (int i = m - 1; i >= 0; i--) {
if (!set.contains(ids[i])) {
set.add(ids[i]); sb.append(ids[i]).append(" "); } } return sb.substring(0,sb.length()-1).toString(); }}

转载地址:http://vfrsi.baihongyu.com/

你可能感兴趣的文章
Leetcode 516. 最长回文子序列
查看>>
mysql时区设置
查看>>
数字中的1——leetcode233
查看>>
python Leetcode732-我的日程安排表 III
查看>>
python leetcode-502-IPO
查看>>
NLP——IMDB数据集探索
查看>>
准确率、召回率、F1、ROC曲线、AUC曲线、PR曲线基本概念
查看>>
python leetcode-414-第三大的数
查看>>
Python中的collections.Counter模块
查看>>
正向最大匹配法、逆向最大匹配法、双向最大匹配法的分析、语言模型中unigram、bigram、trigram的概念以及N-Gram模型介绍
查看>>
python-leetcode-462-最少移动次数使数组元素相等 II
查看>>
python-leetcode-671-合并二叉树
查看>>
文本挖掘预处理之TF-IDF原理 and 互信息的原理
查看>>
机器学习实战:朴素贝叶斯模型之文本分类
查看>>
细谈 SVM原理
查看>>
一文读懂如何用LSA、PSLA、LDA和lda2vec进行主题建模
查看>>
python-leetcode-390-消除游戏
查看>>
人工神经网络知识、激活函数、正则化、优化技术、Batch Normalization、Layer Normalization
查看>>
python-leetcode-128-最长连续序列
查看>>
从one-hot到word2vec再到FastText
查看>>