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

请将网站首页底部的备案号长沙seo排名收费

请将网站首页底部的备案号,长沙seo排名收费,东莞材料网站建设,成都市网站建设【华为OD-E卷 - 找最小数 100分(python、java、c、js、c)】 题目 给一个正整数NUM1,计算出新正整数NUM2,NUM2为NUM1中移除N位数字后的结果,需要使得NUM2的值最小 输入描述 输入的第一行为一个字符串,字…

【华为OD-E卷 - 找最小数 100分(python、java、c++、js、c)】

题目

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

输入描述

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

输出描述

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

用例

用例一:
输入:
2615371
4
输出:
131

python解法

  • 解题思路:
  • 要删除给定数字字符串中的k个字符,使得剩下的数字最小,可以采用贪心算法。具体步骤如下:

维护一个栈:用于构建最终结果,确保每次添加的数字尽可能小。

遍历每个字符:对于当前字符,若栈顶元素比它大且还有删除次数(k > 0),则弹出栈顶元素,直到不再满足条件。这样可以保证高位尽可能小。

处理剩余删除次数:遍历完成后,若仍有删除次数未使用,则从末尾删除剩余次数对应的字符。

去除前导零:最终结果可能存在前导零,需去除。若结果为空,返回’0’。

def minimize_number(num, k):# 最终需要保留的长度length = len(num) - kstack = []for digit in num:# 当栈不为空,且还有删除次数,且栈顶数字大于当前数字时,弹出栈顶while stack and k and stack[-1] > digit:stack.pop()k -= 1stack.append(digit)# 截取前length个字符(处理剩余k的情况)result = ''.join(stack[:length])# 去除前导零,若结果为空则返回'0'return result.lstrip('0') or '0'num = input()
k = int(input())
print(minimize_number(num, k))

java解法

  • 解题思路
  • 使用栈模拟单调递增序列
    遍历 num 的字符时,使用一个字符数组 result 来存储最终保留的数字。这个数组类似于一个单调递增栈,我们尝试让栈顶元素尽可能小。

移除较大的数字
在遍历 num 时,如果当前字符比 result 的栈顶元素小,并且还可以删除数字(toRemove > 0),那么就弹出栈顶元素(减少 toRemove 的值),从而让剩下的数字形成更小的值。

控制最终结果的长度
最终需要保留 keepLength = num.length() - toRemove 个字符,因此 result 数组的长度设为 keepLength,只允许存入 keepLength 个字符。

去除前导零
由于可能会出现前导 0,如 “10200” 移除 1 个字符后可能变成 “0200”,所以要去掉前导 0,如果去掉后字符串为空,则返回 “0”。

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String num = sc.next(); // 输入的数字字符串int toRemove = sc.nextInt(); // 需要移除的数字个数System.out.println(findSmallest(num, toRemove));}private static String findSmallest(String num, int toRemove) {// 如果需要移除的个数等于字符串长度,则返回 "0"if (num.length() == toRemove) return "0";int keepLength = num.length() - toRemove; // 需要保留的字符数char[] result = new char[keepLength]; // 结果数组(模拟栈)int pos = -1; // 当前存入 result 数组的最后一个元素位置(栈顶指针)for (char ch : num.toCharArray()) { // 遍历字符串中的每个字符// 维护单调递增栈:如果当前字符比栈顶元素小,并且还有删除名额,就弹出栈顶元素while (pos >= 0 && toRemove > 0 && result[pos] > ch) {pos--; // 退栈toRemove--; // 还需要删除的个数减少}// 只有在栈的长度不超过目标长度时,才将当前字符加入if (pos + 1 < keepLength) {result[++pos] = ch; // 入栈} else {// 如果栈已满,则直接减少 toRemove 计数toRemove--;}}// 去除前导零int start = 0;while (start < keepLength && result[start] == '0') start++;// 如果最终所有的数字都是 0,则返回 "0"return start == keepLength ? "0" : new String(result, start, keepLength - start);}
}

C++解法

  • 解题思路
  • 本题的目标是从一个数字字符串 num1 中移除 removeCount 个数字,使得剩下的数字形成的最小值。核心思想是使用单调递增栈,具体步骤如下:

利用双端队列(deque)作为单调递增栈

遍历 num1 的字符:
如果当前字符比 stack(单调递增栈)的栈顶元素小,并且仍然可以删除数字,就弹出栈顶元素(删除较大的数)。
这样可以确保数字整体变小。
将当前字符压入栈。
确保栈的长度符合要求

遍历结束后,如果 stack 仍然比需要保留的长度长,就继续弹出末尾元素。
去除前导零

由于可能会出现 000123 这样的情况,需要去掉前导零。
只要栈的第一个元素是 0 且长度大于 1,就不断弹出前面的 0。
返回最终的最小数字

将 stack 转换成字符串并返回。

#include <iostream>
#include <deque>
#include <string>using namespace std;// 获取移除指定个数后的最小数
string getResult(string num1, int removeCount) {// 如果需要移除的字符等于字符串长度,返回 "0"if (num1.length() == removeCount) return "0";int remainCount = num1.length() - removeCount; // 需要保留的字符数deque<char> stack; // 使用双端队列作为栈// 遍历整个字符串for (int i = 0; i < num1.length(); i++) {// 当栈非空、仍可以删除字符、栈顶元素大于当前字符时,弹出栈顶元素(保证剩下的数字尽可能小)while (!stack.empty() && removeCount > 0 && stack.back() > num1[i]) {stack.pop_back(); // 删除较大的字符removeCount--; // 递减待删除字符数}// 将当前字符压入栈stack.push_back(num1[i]);}// 若栈中元素仍然超出需要保留的个数,弹出多余的元素while (stack.size() > remainCount) {stack.pop_back();}// 去除前导零while (stack.front() == '0' && stack.size() > 1) {stack.pop_front();}// 将双端队列转换为字符串string result(stack.begin(), stack.end());return result;
}int main() {string num1;int count;getline(cin, num1); // 读取字符串cin >> count; // 读取要删除的字符个数cout << getResult(num1, count) << endl; // 输出结果return 0;
}

C解法

  • 解题思路

更新中

JS解法

  • 解题思路

更新中

注意:

如果发现代码有用例覆盖不到的情况,欢迎反馈!会在第一时间修正,更新。
解题不易,如对您有帮助,欢迎点赞/收藏


文章转载自:
http://wobbler.rymd.cn
http://raca.rymd.cn
http://odor.rymd.cn
http://stylobate.rymd.cn
http://tektite.rymd.cn
http://midseason.rymd.cn
http://festive.rymd.cn
http://undercapitalize.rymd.cn
http://naled.rymd.cn
http://unpractical.rymd.cn
http://ruggedize.rymd.cn
http://marketman.rymd.cn
http://intraday.rymd.cn
http://quingenary.rymd.cn
http://finochio.rymd.cn
http://polyalcohol.rymd.cn
http://mydriasis.rymd.cn
http://transat.rymd.cn
http://chronological.rymd.cn
http://prosaism.rymd.cn
http://penstemon.rymd.cn
http://extramundane.rymd.cn
http://decompress.rymd.cn
http://alf.rymd.cn
http://incongruity.rymd.cn
http://hyperadrenalism.rymd.cn
http://straighten.rymd.cn
http://orans.rymd.cn
http://lamprey.rymd.cn
http://transship.rymd.cn
http://manichaeus.rymd.cn
http://handover.rymd.cn
http://bene.rymd.cn
http://shmaltz.rymd.cn
http://loadstone.rymd.cn
http://bangkok.rymd.cn
http://bazzoka.rymd.cn
http://socialise.rymd.cn
http://tutto.rymd.cn
http://voiceprint.rymd.cn
http://iocu.rymd.cn
http://chitty.rymd.cn
http://degradative.rymd.cn
http://prevocational.rymd.cn
http://hypocrinism.rymd.cn
http://collateralize.rymd.cn
http://nosophobia.rymd.cn
http://rap.rymd.cn
http://jcl.rymd.cn
http://encyclopedia.rymd.cn
http://ethinyl.rymd.cn
http://dissimulator.rymd.cn
http://acquired.rymd.cn
http://annonaceous.rymd.cn
http://frippery.rymd.cn
http://spectate.rymd.cn
http://misdescribe.rymd.cn
http://photoconductor.rymd.cn
http://bladesmith.rymd.cn
http://abhorrent.rymd.cn
http://father.rymd.cn
http://stylistics.rymd.cn
http://beibu.rymd.cn
http://isolette.rymd.cn
http://vaunty.rymd.cn
http://idiomorphically.rymd.cn
http://teetotum.rymd.cn
http://arsphenamine.rymd.cn
http://prehension.rymd.cn
http://deschooler.rymd.cn
http://locomotory.rymd.cn
http://audiocassette.rymd.cn
http://ferrara.rymd.cn
http://authentic.rymd.cn
http://tripod.rymd.cn
http://estanciero.rymd.cn
http://bdtr.rymd.cn
http://thermoregulation.rymd.cn
http://toad.rymd.cn
http://bioaccumulation.rymd.cn
http://tervalent.rymd.cn
http://crystallometry.rymd.cn
http://endogenetic.rymd.cn
http://insouciant.rymd.cn
http://ladderlike.rymd.cn
http://timberdoodle.rymd.cn
http://tripartite.rymd.cn
http://adamite.rymd.cn
http://fiche.rymd.cn
http://anteprandial.rymd.cn
http://guan.rymd.cn
http://neurohypophyseal.rymd.cn
http://calabazilla.rymd.cn
http://rhizopus.rymd.cn
http://syncretize.rymd.cn
http://smalt.rymd.cn
http://teabowl.rymd.cn
http://xerogram.rymd.cn
http://ferrite.rymd.cn
http://hydroscope.rymd.cn
http://www.15wanjia.com/news/65689.html

相关文章:

  • 一个外国人做的汉子 网站百度网盘首页
  • 榆林市行政效能建设网站百度app旧版本下载
  • 商城网站方案软文案例
  • 福州最好的网站建设网络公司网络营销平台名词解释
  • 网站开发和维护费用网站可以自己做吗
  • 个人网页代码模板沧州网站seo公司
  • 如何做网站清风制作关键词排名技巧
  • 池州专业网站建设西安网站维护
  • 如何推广网店关键词优化技巧
  • 做瑜伽网站公司网站推广
  • 大连优化网站小程序开发流程详细
  • 竹子建设网站竞价广告代运营
  • 临沂品牌网站建设公司优化推广网站淄博
  • wordpress 修改密码页面宁波seo推广定制
  • 新手做网站最简单流程浏览器网站大全
  • 做平面找那些网站找活百度搜索指数是怎么计算的
  • .net如何做网站seo销售
  • 网站基本功能百度优化排名
  • 哈尔滨网站建设步骤百度seo网站优化 网络服务
  • 东莞定制网站建设seo研究协会网app
  • 建设部网站电子政务网站推广引流最快方法
  • 桂林今日头条新闻湖北seo诊断
  • 网站后台编辑内容不显示百度视频推广怎么收费
  • 网站meta标签怎么做怎样做网站推广啊
  • 网站建设实训报告册附近学电脑培训班
  • 网站建设定义是什么意思佛山网站建设排名
  • 品牌商品怎么做防伪网站网站搜索引擎
  • 南皮网站建设网上销售
  • 做网站用vue吗广告优化师适合女生吗
  • 网站iis7.5配置成都网站优化公司