找最小数 - 华为OD统一考试(E卷)

2024华为OD机试(E卷+D卷+C卷)最新题库【超值优惠】Java/Python/C++合集

华为od机试

题目描述

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

输入描述

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

输出描述

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

示例1

输入:
2615371
4输出:
131说明:

示例2

输入:输出:说明:

题解

问题分析

这道题可以归类为贪心算法。目标是在尽量靠左的地方删除比后面大的数字,使得剩下的数字更小。删除操作中优先考虑移除高位的数字,尽量保持低位数字小。

解题的基本思路:

  1. 使用一个栈来存储字符。
  2. 从左到右遍历数字字符串,如果当前数字比栈顶的数字小且还可以删除数字,就弹出栈顶数字。
  3. 遍历完成后,如果删除的数字还不够,则继续从后向前删除栈顶数字。
  4. 最后,将栈中剩下的数字拼接成结果,并移除前导零。

时间复杂度

  • 时间复杂度为O(n),因为每个数字最多进出栈一次。
  • 空间复杂度为O(n),用于存储栈中的数字。

Java

import java.util.Scanner;
import java.util.Stack;
/*** @author code5bug*/
public class Main {public static String removeDigits(String num, int k) {Stack<Character> stack = new Stack<>();for (char digit : num.toCharArray()) {while (!stack.isEmpty() && k > 0 && stack.peek() > digit) {stack.pop();k--;}stack.push(digit);}// 如果 k 还大于 0,继续从栈顶删除while (k > 0) {stack.pop();k--;}// 构建结果StringBuilder result = new StringBuilder();for (char digit : stack) {if (!(result.length() == 0 && digit == '0')) { // 去掉前导零result.append(digit);}}// 如果结果为空,则返回 "0"return result.length() == 0 ? "0" : result.toString();}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取控制台输入String num = scanner.nextLine();int k = scanner.nextInt();// 计算并输出结果System.out.println(removeDigits(num, k));}
}

Python

def remove_digits(num: str, k: int) -> str:stack = []for digit in num:while stack and k > 0 and stack[-1] > digit:stack.pop()k -= 1stack.append(digit)# 如果 k 还大于 0,继续从后面弹出while k > 0:stack.pop()k -= 1# 去掉前导零result = ''.join(stack).lstrip('0')# 如果结果为空,返回 '0'return result if result else '0'if __name__ == "__main__":# 从控制台读取输入num = input()k = int(input())# 输出结果print(remove_digits(num, k))

C++

#include <iostream>
#include <vector>using namespace std;int main() {string num;int k;cin >> num >> k;vector<char> stack;for (char ch: num) {while (!stack.empty() && stack.back() > ch && k > 0) {stack.pop_back();k--;}stack.push_back(ch);}// 还可以删除数字则继续删除while (!stack.empty() && k > 0) {stack.pop_back();k--;}string result;for (char c: stack) {// 确保 result 不是 0 前导的数字字符串if (result.empty() && c == '0')continue;result += c;}cout << (result.empty() ? "0" : result) << endl;return 0;
}

相关练习题

题号难易
402. 移掉 K 位数字中等

整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

一款前后端分离设计的企业级快速开发平台,支持单体服务与微服务之间灵活切换(附源码)

前言 当前软件开发面临诸多挑战&#xff0c;诸如开发效率低下、重复工作多、维护成-本高等问题&#xff0c;这些问题在一定程度上阻碍了项目的进展。针对这些痛点&#xff0c;我们迫切需要一款既能提升开发效率又能降低维护成-本的处理方案。由此&#xff0c;一款基于前后端分…

【Day20240924】联邦学习中的方法 改进

文章目录 前言一、FedAvg二、FedProx三、MOON四、FedDyn五、FedAsync六、PORT七、ASO-Fed八、FedBuff九、FedSA 前言 几种异步的方法&#xff1a; FedAsync PORT ASO-Fed FedBuff FedSA 几种同步的方法&#xff1a; FedAvg FedProx MOON FedDyn 一、FedAvg FedAvg基本步骤&a…

大模型开发应用实战:真实项目实战对标各类大厂大模型算法岗技术

一、引言 在人工智能领域&#xff0c;大模型已经成为推动技术进步和应用创新的重要力量。随着技术的不断发展&#xff0c;各大厂商纷纷投入大量资源研发大模型&#xff0c;并尝试将其应用于各种实际场景中。为了培养具备大模型开发与应用能力的高级技术人才&#xff0c;我们组织…

cuda算子优化-transpose

transpose 参考链接 方法一&#xff1a;每个线程负责一个元素的转置 cuda代码实现 ncu分析&#xff08;矩阵维度采用m1024&#xff0c;n512&#xff1b;grid和block维度见下图最上方&#xff09; 这种方法对读global mem比较友好&#xff0c;可以做到合并访存&#xff0c;但…

知识产权 ABS 企业融资新渠道

在当今知识经济时代&#xff0c;知识产权作为企业的核心资产&#xff0c;其价值日益凸显。知识产权资产证券化&#xff08;Intellectual Property Asset-Backed Securitization&#xff0c;简称知识产权ABS&#xff09;作为一种创新的金融工具&#xff0c;为企业盘活知识产权资…

Cpp类和对象(下)(6)

文章目录 前言一、初始化列表概念使用注意实际运用explicit关键字初始化列表的总结 二、static成员static成员的概念static成员的特性static的一个实用场景 三、友元友元函数友元类 四、内部类概念特性 五、匿名对象六、再次理解封装和面向对象总结 前言 Hello&#xff0c;本篇…

【Oauth2整合gateway网关实现微服务单点登录】

文章目录 一.什么是单点登录&#xff1f;二.Oauth2整合网关实现微服务单点登录三.时序图四.代码实现思路1.基于OAuth2独立一个认证中心服务出来2.网关微服务3产品微服务4.订单微服务5.开始测试单点登录 一.什么是单点登录&#xff1f; 单点登录&#xff08;Single Sign On&…

权威期刊Cell Discovery新成果!上海交大洪亮团队提出CPDiffusion模型,超低成本、全自动设计功能型蛋白质

蛋白质是生命活动的主要执行者&#xff0c;其结构与功能之间的关系一直是生命科学领域研究的核心议题。近年来&#xff0c;随着深度学习的兴起&#xff0c;借助其强大的数据处理能力&#xff0c;让模型学习蛋白质序列、结构及其功能之间的映射关系&#xff0c;设计出具备更高稳…

prithvi WxC气象模型

NASA发布了prithvi WxC气象模型发布 Prithvi是NASA开源的模型&#xff0c;被誉为全球最大的开源地理空间大模型。昨天晚上逛X平台&#xff0c;我看到Prithvi模型又来了新成员&#xff1a;prithvi WxC。 NASA和IBM创建了一个基于MERRA-2数据的天气和气候AI基础模型—Prithvi Wx…

数据库事务索引视图、存储过程

目录 文章目录 一、数据库事务 事务概述&#xff1a; 事务特征&#xff1a; 提交回滚 隔离级别 二、索引 索引创建原则&#xff1a; 存储引擎 单列索引 组合索引 全文索引 空间索引 三、视图 四、函数和存储过程 1.函数的创建 2.存储过程 3.调用格式 4.两者…

初识爬虫8

1.selenium的作用和工作原理 2. 使用selenium&#xff0c;完成web浏览器调用 # -*- coding: utf-8 -*- # 自动化测试工具&#xff0c;降低难度&#xff0c;性能也降低 from selenium import webdriverdriver webdriver.Edge()driver.get("https://www.itcast.cn/")…

高德2024全民出行节启动,联合生态伙伴发放百亿补贴

临近十一黄金周&#xff0c;高德地图宣布启动“2024全民出行节” &#xff0c;致力于打造出门好生活体验&#xff0c;让用户十一出行“和囧途说ByeBye”。今年十一黄金周期间&#xff0c;高德地图联合生态伙伴在百大行业推出百亿补贴&#xff0c;涵盖吃、住、行、游、购、娱。同…

netty编程之那么多的网络框架为啥非选你?

写在前面 java nio框架不止一种&#xff0c;为啥非选netty&#xff1f;本文来看下。 1&#xff1a;正文 网络io框架&#xff0c;除了netty外&#xff0c;还有mina&#xff0c;sun grizzly&#xff0c;cindy等&#xff0c;为啥独选netty。 mina netty和mina作者同属一人&…

CAN协议一致性测试——深入浅出理解CAN协议(四)

本系列是在同公司硬件设计、验证的同事1、在完成了CANFD硬件接口IP开发 2、熟悉ISO-11898系列、ISO16845、CAN2.0协议、CANFD协议等以及大量学习资料 3、深入研究其他家CANFD IP&#xff08;NXP、BOSCH&#xff09;4、独立开发了对应底层驱动 5、通过CANoe和周立功CAN分析仪完成…

类的难疑点

一、知识点 1、类的属性和对象属性&#xff08;实例属性&#xff09; shuxing"123" self.shuxing"123" 2、类的对象 self.loginMyclass() loginMyclass() 3、访问类属性和方法的操作 通过“类名.属性”访问&#xff1a;Myclass.shuxing 通…

筋膜炎能自愈吗

筋膜炎能否自愈&#xff0c;主要取决于病情的严重程度以及患者的自我管理和治疗情况。 一、轻微筋膜炎的自愈可能性 对于轻微筋膜炎患者&#xff0c;通过合理的日常护理和适当的运动锻炼&#xff0c;有很高的自愈可能性。这包括&#xff1a; 1、充分休息&#xff1a;避免过度…

【BetterBench博士】2024华为杯C题:数据驱动下磁性元件的磁芯损耗建模 Python代码实现

题目 【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析 【BetterBench博士】2024年中国研究生数学建模竞赛 E题&#xff1a;高速公路应急车道紧急启用模型 问题分析 【BetterBench博士】2024年中国研究生数学建模竞赛 C题&#xff1a;数据驱动…

React 理解 re-render 的作用、概念,并提供详细的例子解释

一、什么是 re-render 在 React 中 re-render&#xff08;重新渲染&#xff09; 是经常发生的行为&#xff0c;主要确保视图要时刻保持最新的数据来呈现。 但每次发生 re-render 也是有代价的&#xff0c;比如数据状态、focus 焦点、表单数据、都得重置&#xff0c; 遇到代码…

Linux ping c实现

linux下ping程序的c实现 #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdint.h> #include <netdb.h> #include <arpa/inet.h> #include <unistd.h> #include <st…

LoongArch 个人赛一级评测(前递旁路+load阻塞)

目录 LoongArch 个人赛一级评测&#xff08;前递旁路load阻塞&#xff09;声明测试说明 代码修改thinpad_top.vconver_ram.vIF_stage 测试自动评测在线实验 踩坑记录读写使能控制inout类端口的使用方法Vivado生成Bit流文件时出现[Synth 8-91] ambiguous clock in event control…