当前位置: 首页 > news >正文

计算堆栈中的剩余数字

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

该专栏题目包含两部分:
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

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.lryc.cn/news/474401.html

相关文章:

  • 笔记:mysql升级 5.6至5.7
  • 前端的全栈Deno篇(五):与前端保持一致的模块化方案,摆脱ERR_REQUIRE_ESM和mjs、cjs等模块混乱带来的心智负担
  • 与外部公司做数据交互时,需要注意哪些事情?
  • 基于hive分析Flask为后端框架echarts为前端框架的招聘网站可视化大屏项目
  • Ansible 部署应用
  • 使用Docker Swarm进行集群管理
  • 基于树莓派的安保巡逻机器人--(一、快速人脸录入与精准人脸识别)
  • 中间件的应用
  • 真题与解析 202206二级 青少年软件编程(Python)考级
  • ChatGPT新体验:AI搜索功能与订阅支付指南
  • 【植物识别】Python+深度学习+人工智能+CNN卷积神经网络+算法模型训练+TensorFlow
  • 快讯,Flutter PC 多窗口新进展,已在 Ubuntu/Canonical 展示
  • BigDecimal 详解
  • ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板
  • CSS3新增盒子属性(三)
  • Manus在虚拟现实仿真模拟中的应用案例分享
  • 大数据-201 数据挖掘 机器学习理论 - 决策树 局部最优 剪枝 分裂 二叉分裂
  • Scala 的trait
  • vue3官方示例-简单的 markdown 编辑器。
  • Linux标准I/O库汇总整理
  • BGP路由优选+EVPN
  • 牛客练习赛131(未补)
  • 功能更新丨AI黑科技助燃VR全景新势能
  • JavaCV学习第一课
  • Java第二阶段---16字符串---第一节 String
  • <十六>Ceph mon 运维
  • 【网络安全初识】——互联网发展史
  • Windows和Linux内存共享机制
  • windows@命令行中获取环境变量取值不展开取值(原值)
  • 如何找到多平台内容爆款进行批量复刻?