AcWing 830. 单调栈--java速度和c速度的区别
原题链接
简单
作者:
zzuts
,
2021-05-10 22:05:05
,
所有人可见
,
阅读 205
单调栈
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class 单调栈 {
static int N=100010;
static int stk[]=new int [N],tt=0;
static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws Exception{
int n=Integer.parseInt(br.readLine());
String s=br.readLine();
String s1[]=s.split(" ");
StringBuilder st=new StringBuilder();
for (int i = 0; i < s1.length; i++) {
int x=Integer.parseInt(s1[i]);
while(tt!=0&&stk[tt]>=x) {
tt--;
}
if(tt!=0) {
st.append(stk[tt]);
st.append(" ");
}
else {
st.append(-1);
st.append(" ");
}
stk[++tt]=x;
}
bw.write(st.toString());
bw.flush();
bw.close();
br.close();
}
}
- 上面是我写的代码,主要思路是从0开始找比x这个数字小的数字,如果比这个数字大,就直接去掉它,因为后面x就已经笔者仍数字笑了
- 但是我主要关注逇不是这个,而是我用了快读和StringBulider,运行时间1014 ms,但是用c的scanf和printf时间只需要130多ms,心态炸了
- 我用的IO的字符流输入输出,有比这个快读更快的吗?可以推荐给我