华为OD机试 - 计算堆栈中的剩余数字 | 机试题算法思路 【2023】

news/2024/7/20 17:56:11 标签: 华为, 开发语言, 华为od, 机试题, 华为od机试题

最近更新的博客

华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】
华为OD机试题 - 获取最大软件版本号(JavaScript)
华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】
华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】
华为OD机试 - 自动曝光(Python) | 机试题算法思路 【2023】

使用说明

参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。

华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html

华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730

计算堆栈中的剩余数字

题目

向一个空栈中依次存入正整数
假设入栈元素N(1<=N<=2^31-1)
按顺序依次为NxN4N3N2N1,
当元素入栈时,如果N1=N2+...Ny(y的范围[2,x],1 <= x <= 1000)
则 N1 到 Ny 全部元素出栈,重新入栈新元素M(M=2*N1)
如依次向栈存储6123,当存储612
栈底至栈顶以此为[6、1、2]:当存入3时,3=2+1,
321全部出栈,重新入栈元素6(6=2*3)此时栈中有元素6
因为6=6,所有两个六全部出栈存入12
最终栈中只剩一个元素12

输入

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

输出描述

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

示例一

输入

5 10 20 50 85 1

输出

1 170

说明

5+10+20+50=85
输入 85 时, 5、10、20、50、85 全部出栈
入栈 170
最终依次出栈的数字为 1 和 170

示例二

输入

6 7 8 13 9

输出

9 13 8 7 6

示例三

输入

1 2 5 7 9 1 2 2

输出

4 1 9 14 1

编码思路

对于给定的一组整数,将其中的一些整数加倍并删除某些整数,得到一个新的整数序列,使得新序列中相邻的两个整数之和不相等。程序通过从原序列的尾部开始输出新序列,将结果打印到标准输出流中。

核心知识点

无特殊知识点,可参考代码进行学习。

Python 代码实现

import sys


def solve_method(line):
    strings = line.split()
    list = [int(s) for s in strings]
    is_change = True
    while len(list) != 1 and is_change:
        for i in range(1, len(list)):
            n = i
            num = list[i]
            is_end = False
            count = 0
            while not is_end:
                n -= 1
                count += list[n]
                if count == num:
                    if i >= n:
                        del list[n:i + 1]
                    list.insert(n, 2 * num)
                    is_change = True
                    break
                if count > num or n == 0:
                    is_end = True
                    is_change = False
            if is_change:
                break
    res = " ".join([str(n) for n in reversed(list)])
    print(res, end='')


if __name__ == '__main__':
    line = sys.stdin.readline().strip()
    solve_method(line)

代码运行结果

5 10 20 50 85 1
1 170

版权说明

试题来源:华为 OD 联盟整理收集

题解:解题思路代码 为原创内容,该部分版权由 OD 联盟共同拥有,并授权组内成员发布。

目标:👉 助你解开所有机试题

👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇

  • ⭐️ Python 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

华为OD机试题

    • 最近更新的博客
    • 使用说明
  • 计算堆栈中的剩余数字
    • 题目
    • 输入
    • 输出描述
    • 示例一
      • 输入
      • 输出
      • 说明
    • 示例二
      • 输入
      • 输出
    • 示例三
      • 输入
      • 输出
    • 编码思路
    • 核心知识点
    • Python 代码实现
    • 代码运行结果
    • 版权说明


http://www.niftyadmin.cn/n/84586.html

相关文章

如何开发微信小程序呢

也许很多人对小程序&#xff0c;H5程序&#xff0c;Vue&#xff0c;网页程序&#xff0c;PC端程序认识比较模糊&#xff0c;因为这些跨度非常的大&#xff0c;很少人会一次性全部接触&#xff0c;甚至只是听说过&#xff0c;并不了解其中的关系&#xff0c;下面我来厘清他们的关…

SEC是否会继续打击中心化平台的质押服务?

Kraken质押服务被禁的影响 原文&#xff1a;http://www.btcwbo.com/6982.html 2月9日&#xff0c;SEC&#xff08;美国证券交易委员会&#xff09;指控加密货币交易平台Kraken未注册质押服务&#xff0c;违反了证券法&#xff0c;并命令其停止在美国的所有质押服务&#xff0c;…

Spring Boot装配配置文件properties的参数

spring装配配置文件主要分为两种&#xff1a;一种是主配置文件&#xff0c;另一种是其他配置文件。 在使用maven构建spring boot项目时会产生一个主要的配置文件application.properties 有些习惯yml的语法是application.yml都是一个意思&#xff0c;spring也能自动识别。 除了…

传闻腾讯引进Quest 2?我觉得可行性很低

根据36kr最新消息称&#xff0c;腾讯XR团队解散后&#xff0c;确定不碰XR硬件领域&#xff0c;但并未完全放弃XR规划&#xff0c;将转变思路和玩法&#xff0c;业内消息称腾讯计划引进Meta旗下Quest 2 VR一体机。消息称&#xff0c;该计划在2022年11月份XR部门负责人沈黎走后便…

【算法基础】数组扩容、缩容

1. 数组扩容 问题&#xff1a; 现有数组 int[] arr new int[]{1,2,3,4,5,6}; &#xff0c;现将数组长度扩容1倍&#xff0c;并将7,8,9三个数据添加到arr数组中。 思路&#xff1a; 新建一个数组长度为arr的两倍将arr的值复制到新数组再新数组尾部追加数据将新数组的指针指向…

HTML+CSS学习

HTML和CSS简介 HTML HTML&#xff08;Hypertext Markup Language&#xff09; 超文本标记语言。 它负责网页的三个要素之中的结构。 HTML使用标签的的形式来标识网页中的不同组成部分。 所谓超文本指的是超链接&#xff0c;使用超链接可以让我们从一个页面跳转到另一个页面。…

从零开始的机械臂yolov5抓取gazebo仿真(导航贴)

本篇博客为《从零开始的机械臂yolov5抓取gazebo仿真》系列的导航贴 该导航帖将会不断更新 从零开始的机械臂yolov5抓取gazebo仿真视频链接&#xff1a;项目视频链接 一.教程部分 从零开始的机械臂yolov5抓取gazebo仿真系列目录如下 1.在SolidWorks中将机械臂模型导出机械臂…

Nacos服务发现原理分析

微服务将自己的实例注册到nacos注册中心&#xff0c;nacos服务端存储了注册列表&#xff0c;然后通过ribbon调用服务&#xff0c;具体是如何调用&#xff1f;如果nacos服务挂了&#xff0c;还能正常调用服务吗&#xff1f;调用的服务列表发生变化&#xff0c;调用方是如何感知变…