做网站简单么,在线是免费生成网,宣传片拍摄合同模板,自己做的网站本地虚拟上传更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记
该专栏题目包含两部分#xff1a; 100 分值部分题目 200 分值部分题目 所有题目都会陆续更新#xff0c;订阅防丢失
题目描述#xff1a;
向一个空栈中依次存入正整数#xff0c;
假设入栈元素 n ( 1 n 2…
更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记
该专栏题目包含两部分 100 分值部分题目 200 分值部分题目 所有题目都会陆续更新订阅防丢失
题目描述
向一个空栈中依次存入正整数
假设入栈元素 n ( 1 n 2 3 1 − 1 ) n(1n2^31-1) n(1n231−1)按顺序依次为 n x . . . n 4 、 n 3 、 n 2 、 n 1 nx...n4、n3、n2、n1 nx...n4、n3、n2、n1,
每当元素入栈时如果 n 1 n 2 . . . n y n1n2...ny n1n2...ny ( y y y的范围 [ 2 , x ] [2,x] [2,x] 1 x 1000 1x1000 1x1000 )则 n 1 n y n1~ny n1 ny 全部元素出栈重新入栈新元素 m ( m 2 ∗ n 1 ) m(m2*n1) m(m2∗n1)。
如依次向栈存入6、1、2、3,
当存入6、1、2时栈底至栈顶依次为[6、1、2]
当存入3时3213、2、1全部出栈重新入栈元素6(62*3)此时栈中有元素6因为66所以两个6全部出栈存入12最终栈中只剩一个元素12。
输入描述
使用单个空格隔开的正整数的字符串如5 6 7 8 左边的数字先入栈 输入的正整数个数为 x 1 x 1000 x1x1000 x1x1000。
输出描述
最终栈中存留的元素值元素值使用空格隔开如8 7 6 5 栈顶数字在左边。
示例1
输入
5 10 20 50 85 1输出
1 170说明
510205085 输入85时5、10、20、50、85全部出栈入栈170最终依次出栈的数字为1和170。
示例2
输入
6 7 8 13 9输出
9 13 8 7 6说明
示例3
输入
1 2 5 7 9 1 2 2输出
4 1 9 14 1题解
使用 list 模拟栈的操作
源码 Java
public class StackEnter {static ListInteger list new ArrayList();static Input input;static {input new Input(5 10 20 50 85 1);input new Input(6 7 8 13 9);}public static void main(String[] args) {String[] split input.nextLine().split( );for (int i 0; i split.length; i) {push(Integer.parseInt(split[i]));}Integer pop pop();StringBuilder builder new StringBuilder();while (pop ! null) {builder.append(pop).append( );pop pop();}System.out.println(builder.toString().trim());}public static void push(Integer value){int sum 0;for (int i list.size() - 1; i 0; i--) {sum list.get(i);if (sum value) {break;} else if (sum value) {break;}}if (sum value) {while (sum 0) {Integer pop pop();sum - pop;}value value * 2;}list.add(value);}public static Integer pop(){if (list.isEmpty()){return null;}return list.remove(list.size()-1);}}