【Py/Java/C++三种语言OD2023C卷真题】20天拿下华为OD笔试【单调栈】2023C-找最小数【欧弟算法】全网注释最详细分类最全的华为OD真题题解

文章目录

  • 题目描述与示例
    • 题目描述
    • 输入
    • 输出
    • 示例一
      • 输入
      • 输出
      • 说明
    • 示例二
      • 输入
      • 输出
    • 示例三
      • 输入
      • 输出
  • 解题思路
  • 代码
    • Python
    • Java
    • C++
    • 时空复杂度
  • 华为OD算法/大厂面试高频题算法练习冲刺训练

题目描述与示例

题目描述

给一个正整数 NUM1,计算出新正整数 NUM2NUM2NUM1 中移除 N 位数字后的结果,需要使得 NUM2 的值最小。

输入

  1. 输入的第一行为一个字符串,字符串由 0-9 字符组成,记录正整数 NUM1NUM1 长度小于 32
  2. 输入的第二行为需要移除的数字的个数,小于 NUM1 长度。

输出

输出一个数字字符串,记录最小值 NUM2

示例一

输入

2615371
4

输出

131

说明

移除 2657 这四个数字,剩下 131 按原有顺序排列组成 131 为最小值。

示例二

输入

12345
2

输出

123

示例三

输入

10345
2

输出

034

解题思路

注意,本题和LC402. 移掉K位数字完全一致。

代码

Python

# 题目:2023B-找最小数
# 分值:200
# 作者:闭着眼睛学数理化
# 算法:单调栈
# 代码看不懂的地方,请直接在群上提问NUM1 = input()
n = int(input())
# rest_n 表示剩余的删除次数
rest_n = n# 构建一个单调栈,
# 单调栈从栈底至栈顶单调递增
# 即大的数字放在栈顶
stack = list()# 遍历数字字符串NUM1中的每一个字符ch
for ch in NUM1:# 出栈的情况:# 1. 栈不为空# 2. ch小于栈顶元素# 3. 剩余的删除次数大于0# 即可以弹出栈顶元素,这样才能使得栈顶元素尽可能小while len(stack) and ch < stack[-1] and rest_n > 0:stack.pop()rest_n -= 1# 对于每一个ch,都应该入栈stack.append(ch)# 结束循环时,栈中元素不一定恰好为len(NUM1)-n
# 所以取较小的数前 len(NUM1)-n 个数组合成字符串
print("".join(stack[:len(NUM1)-n]))

Java

import java.util.Scanner;
import java.util.Stack;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String NUM1 = scanner.nextLine();int n = scanner.nextInt();int rest_n = n;Stack<Character> stack = new Stack<>();for (char ch : NUM1.toCharArray()) {while (!stack.isEmpty() && ch < stack.peek() && rest_n > 0) {stack.pop();rest_n--;}stack.push(ch);}StringBuilder result = new StringBuilder();int len = NUM1.length() - n;for (int i = 0; i < len; i++) {result.append(stack.get(i));}System.out.println(result.toString());}
}

C++

#include <iostream>
#include <stack>
#include <string>using namespace std;int main() {string NUM1;int n;cin >> NUM1 >> n;int rest_n = n;stack<char> stack;for (char ch : NUM1) {while (!stack.empty() && ch < stack.top() && rest_n > 0) {stack.pop();rest_n--;}stack.push(ch);}string result;int len = NUM1.size() - n;while (!stack.empty()) {result = stack.top() + result;stack.pop();}result = result.substr(0, len);cout << result << endl;return 0;
}

时空复杂度

时间复杂度:O(M)。仅需一次遍历字符串NUM1

空间复杂度:O(M)。单调栈所占用的额外空间。

M为字符串NUM1的长度。


华为OD算法/大厂面试高频题算法练习冲刺训练

  • 华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名!目前已服务100+同学成功上岸!

  • 课程讲师为全网50w+粉丝编程博主@吴师兄学算法 以及小红书头部编程博主@闭着眼睛学数理化

  • 每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!

  • 60+天陪伴式学习,40+直播课时,300+动画图解视频,300+LeetCode经典题,200+华为OD真题/大厂真题,还有简历修改、模拟面试、专属HR对接将为你解锁

  • 可上全网独家的欧弟OJ系统练习华子OD、大厂真题

  • 可查看链接 大厂真题汇总 & OD真题汇总(持续更新)

  • 绿色聊天软件戳 od1336了解更多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LDO和DCDC的区别

目录标题 前言什么是LDO&#xff1f;什么是DCDC&#xff1f;LDO和DCDC的主要区别 前言 对于初学者来说&#xff0c;最常见到的LDO就是最小系统板上自带的低压差线性稳压器&#xff0c;其用于将USB输入的5V电压转化为3.3V供给单片机。最长用到DCDC器件&#xff0c;就是在做小车…

python算法例18 滑动窗口的最大值

1. 问题描述 给定一个可能包含重复整数的数组和一个大小为k的滑动窗口&#xff0c;从左到右在数组中滑动这个窗口&#xff0c;找到数组中每个窗口内的最大值。 2. 问题示例 给出数组[1&#xff0c;2&#xff0c;7&#xff0c;7&#xff0c;8]&#xff0c;滑动窗口大小为k3&a…

Redis - 主从集群下的主从复制原理

主从复制过程 数据同步演变过程 sync 同步 Redis 2.8 版本之前&#xff0c;首次通信成功后&#xff0c; slave 会向 master 发送 sync 数据同步请求。然后 master 就会将其所有数据全部发送给 slave &#xff0c;由 slave 保存到其本地的持久化文件中。这个过 程…

推荐10款值得信赖的办公软件app,为你的工作提效!

在如今的工作环境中&#xff0c;人们需要经常使用各种办公软件来提高工作效率&#xff0c;同时也帮助我们更好地管理自己的工作和生活。以下是推荐10款值得信赖的办公软件app&#xff1a; 1、Evernote – Evernote是一款非常流行的笔记应用程序&#xff0c;适用于多个平台。它…

conda的安装及使用 以pycharm 为例

下载 https://docs.conda.io/en/latest/miniconda.html 下载 window版本 74M且下着吧。 安装 一路next或agree &#xff0c;不同意人家也不会按装 。重要的是安装目录 让andconda当老大 pycharm的使用 创建项目时如下图选择 成功后进入项目的Terminal则如下图表示成功

快速二维相位解包算法基于按照非连续路径进行可靠性排序

Miguel Arevallilo Herra ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat 摘要&#xff1a; 据我们所知&#xff0c;我们描述了一种新的相位展开技术。已经提出了几种基于首先展开最可靠像素的算法。这些仅限于连续路径&#xff0c;并且在定义起始像素时会遇…

目前进度记录

目前已经把之前记录的方法都实现了&#xff0c;目前的主函数可以写的更简单比如 int main(int argc, char* argv[]) {KernelClass::create_kernel();MPI_Init(&argc, &argv);kernel().mpi_manager.init_mpi(argc, argv);//创建种群int group1 kernel().conn_manger.c…

山西教资面试---结构化真题125道

文章目录 第一章 教育教学类单元1&#xff1a;应急应变&#xff08;1-21&#xff09;单元2&#xff1a;日常管理&#xff08;22-54&#xff09;单元3&#xff1a;人际关系&#xff08;55-66&#xff09; 第二章 综合分析类单元4&#xff1a;社会现象&#xff08;66-112&#xf…

Python特征工程神器:Feature Engine库详解与实战

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 特征工程是机器学习中至关重要的一环&#xff0c;而Feature Engine库作为Python中的强大特征工程工具&#xff0c;提供了丰富的功能和灵活的操作。本文将深入探讨Feature Engine的各种特性&#xff0c;包括缺失值…

torch.bmm

在PyTorch中&#xff0c;torch.bmm函数用于执行批量矩阵相乘&#xff08;Batch Matrix Multiplication&#xff09;。它接受三维张量作为输入&#xff0c;并执行批量矩阵相乘的操作。 具体来说&#xff0c;假设我们有两个输入张量A和B&#xff0c;它们的维度分别为 &#xff…

单片机的低功耗模式介绍

文章目录 简介一、功耗来源说明1.1、芯片工作模式1.2、静态损耗1.3、I/O额外损耗1.4、动态损耗 二、功耗如何测量三、降低功耗有什么方法3.1、选取合适的芯片工作模式3.2、降低工作频率3.3、关闭不需要使用的外设3.4、 降低静态电流损耗3.5、 周期采集供电3.6、 设置IO口状态 四…

HNU数据库大作业-世界杯比赛系统

前言 之前做的那个版本bug较多&#xff0c;后进行了大量优化。 此项目是一个前后端分离的项目&#xff0c;前端主要使用htmlcssjs搭建&#xff0c;使用的是layui框架 后端使用php语言&#xff0c;仅实现了简单的查询数据库功能&#xff0c;无法实现多并发查询等复杂情况 数…

云架构俭约之道七法则(The Frugal Architect)

文章目录 一、前言关于 Law 与 Rule 的区别 二、云架构俭约之道七法则Design&#xff08;设计方面&#xff09;Law 1&#xff1a;把成本作为非功能性需求Law 2&#xff1a;可持续性系统需要将成本与业务相匹配Law 3&#xff1a;架构设计是一系列权衡的取舍 Measure&#xff08;…

iOS加密CoreML模型

生成模型加密密钥 必须在Xcode的Preferences的Accounts页面登录Apple ID&#xff0c;才能在Xcode中生成模型加密密钥。 在Xcode中打开模型&#xff0c;单击Utilities选项卡&#xff0c;然后单击“Create Encryption Key”按钮。 从下拉菜单中选择当前App的Personal Team&…

多项目同时进行如何做好进度管理?

许多企业都面临着同时进行多个项目的情况&#xff0c;因此项目经理经常需要管理多个项目。多项目管理的难点不仅在于项目数量增加&#xff0c;还在于资源分配不均、难以监控多个项目进度以及复杂的沟通协作。 一、从项目经理的角度分析 首先&#xff0c;要把握高效项目管理的几…

蚂蚁SEO实用的网络baidu蜘蛛有哪些

网络蜘蛛是一种用于从互联网上自动抓取信息的程序。它们根据给定的规则和指令&#xff0c;遍历网站上的页面&#xff0c;收集信息并将其存储在数据库中。网络蜘蛛在搜索引擎、数据挖掘、信息提取等领域有着广泛的应用。本文将介绍一种实用的网络蜘蛛&#xff0c;并探讨其实现原…

视频号小店与小商店有什么区别?一篇文章带你了解!

我是电商珠珠 视频号小店和小商店都是腾讯开发出来的电商平台&#xff0c;视频号小店出现的比小商店要晚一些&#xff0c;所以很多想入驻的新手&#xff0c;在这两者之间容易混淆。 下面我就来跟大家详细的讲一下&#xff0c;这两者之间区别。 1、团队不同 虽然都是腾讯公司…

MySQL——库,表基础操作

目录 一.库的操作 1.显示当前的数据库列表 2.创建数据库 3.字符集和校验规则 4.操纵数据库 5.删除数据库 6.数据库备份与还原 7.查看连接情况 二.表的操作 1.创建表 2.查看表结构 3.修改表 4.删除表 一.库的操作 1.显示当前的数据库列表 show databases; 2.创建数…

KubeKey 离线部署 KubeSphere v3.4.1 和 K8s v1.26 实战指南

作者&#xff1a;运维有术 前言 知识点 定级&#xff1a;入门级了解清单 (manifest) 和制品 (artifact) 的概念掌握 manifest 清单的编写方法根据 manifest 清单制作 artifactKubeKey 离线集群配置文件编写KubeKey 离线部署 HarborKubeKey 离线部署 KubeSphere 和 K8sKubeKey…

自建zerotier planet服务linux客户端使用

前期准备planet文件&#xff0c; 1.先安装zerotier curl -s https://install.zerotier.com | sudo bash2.安装完毕之后把planet文件上传上去 这个位置 3.加入网络&#xff0c;这里不做创建演示 zerotier-cli join 地址 4.查看planet的ip 直接用bash ifconfig没有的用ip ad…