计算堆栈中的剩余数字

news/2024/11/1 20:29:14/

更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记

该专栏题目包含两部分:
100 分值部分题目
200 分值部分题目
所有题目都会陆续更新,订阅防丢失

题目描述:

向一个空栈中依次存入正整数,

假设入栈元素 n ( 1 < = n < = 2 3 1 − 1 ) n(1<=n<=2^31-1) n(1<=n<=2311)按顺序依次为 n x . . . n 4 、 n 3 、 n 2 、 n 1 nx...n4、n3、n2、n1 nx...n4n3n2n1,

每当元素入栈时,如果 n 1 = n 2 + . . . + n y n1=n2+...+ny n1=n2+...+ny ( y y y的范围 [ 2 , x ] [2,x] [2,x] 1 < = x < = 1000 1<=x<=1000 1<=x<=1000 ),则 n 1 n y n1~ny n1 ny 全部元素出栈,重新入栈新元素 m ( m = 2 ∗ n 1 ) m(m=2*n1) m(m=2n1)

如:依次向栈存入6、1、2、3,

当存入6、1、2时,栈底至栈顶依次为[6、1、2];

当存入3时,3=2+1,3、2、1全部出栈,重新入栈元素6(6=2*3),此时栈中有元素6;因为6=6,所以两个6全部出栈,存入12,最终栈中只剩一个元素12。

输入描述:

使用单个空格隔开的正整数的字符串,如"5 6 7 8", 左边的数字先入栈,
输入的正整数个数为 x , 1 < = x < = 1000 x,1<=x<=1000 x1<=x<=1000

输出描述:

最终栈中存留的元素值,元素值使用空格隔开,如"8 7 6 5", 栈顶数字在左边。

示例1

输入:

5 10 20 50 85 1

输出:

1 170

说明:

5+10+20+50=85, 输入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

java">public class StackEnter {static List<Integer> 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);}}

http://www.ppmy.cn/news/1543680.html

相关文章

Spring Boot在校园社团信息管理中的实践与思考

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

PHP语言学习教程:从入门到精通

PHP语言学习教程&#xff1a;从入门到精通 欢迎来到这篇关于 PHP 的学习教程&#xff01;在这篇文章中&#xff0c;我们将深入探讨 PHP 的各个方面&#xff0c;从基础语法到高级特性&#xff0c;帮助你掌握这门强大的服务器端编程语言。无论你是初学者还是有一定经验的开发者&…

kotlin android Handler removeCallbacks runnable不生效的一种可能

android Handler无法移除runnable。 比较老的解释就是因为messageQueue已经即将执行的不能被取消&#xff0c;这种我们很好理解它&#xff0c; 因为他已经在跑了&#xff0c;自然无法移掉。 但是在kotlin下有个大坑。 赶快来全局搜索检查你的removeCallbacks吧&#xff01; pr…

Python3 基础核心语法指南(初级版)

Python 是一门广泛使用的编程语言&#xff0c;适合从小项目到大规模应用开发。本文介绍 Python 的基本语法和一些实用的编程技巧&#xff0c;适合初学者与开发人员。为了方便大家理解&#xff0c;有些例子采用两种写法&#xff0c;一种采用的是英文变量名&#xff0c;另一种则采…

三、k8s快速入门之Kubectl 命令基础操作

⭐️创建Pod [rootmaster ~]# kubectl run nginx --imageharbor.tanc.com/library/ngix:latest kubectl run --generatordeployment/apps.v1 is DEPRECATED and will be rmoved in a future version. Use kubectl run --generatorrun-pod/v1 or kbectl create instead. deplo…

jlink识别不到gd32@

jlink识别不到gd32 SW Device 1、原因可能是jlink硬件HW版本过低&#xff0c;或者PC端jlink工具安装包版本过低&#xff1b; 通过jlink configuration.exe升级HW固件版本&#xff1b; PC端上位机jlink工具版本下载 2、上电默认一些选项导致的低级识别不到 诸如此类的&#xff0…

WPF+MVVM案例实战(九)- 霓虹灯字效果控件封装实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、运行效果2、主菜单与界面实现1、主菜单2、霓虹灯字界面实现3、字体资源获取3、控件封装1.创建自定义控件2、依赖属性实现3、封装控件使用4、运行效果4、源代码获取1、运行效果 2、主菜单与界面实…

《Python游戏编程入门》注-第4章2

《Python游戏编程入门》的“4.2.2 键盘事件”中介绍了通过键盘事件来监听键盘按键的方法。 1 键盘事件 玩家点击键盘中某个按键实际上包含了两个动作&#xff1a;点击按键和释放按键&#xff0c;也就是按键按下和松开。按键按下的对应的事件是KEYDOWN&#xff0c;按键松开对应…