华为OD机试真题 Java 实现【找最小数】【2023 B卷 100分】,附详细解题思路

news/2024/6/23 8:16:15

在这里插入图片描述

一、题目描述

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

二、输入描述

输入的第一行为一个字符串,字符串由0~9字符组成,记录正整数num1,num1的长度小于32。

输入的第二行为需要移除的数字的个数,小于num1的长度。

三、输出描述

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

例如:
2681372
4

输出132

四、解题思路

输入:

61811354 共8位 定义变量sum
4 移除的个数4 定义变量removeSum

输出4位 剩余的个数4 定义变量returnSum

输出:

1113

思路

  1. 计算出输出数字的位数sum;
  2. 从开头遍历到sum - returnSum,找到最小的数(获取第一位时,此时sum - returnSum为4,也就是遍历到下角标为4的数字,即从61811中找出最小值1);
  3. 再从当前位置遍历到sum - (returnSum-1),找到最小的数(获取第二位时,此时sum - (returnSum-1)为5,也就是从第一个数字1的下一个数字开始遍历,遍历到下角标为5的数字,即从8113中找出最小值1);
  4. 再从当前位置遍历到sum - (returnSum-2),找到最小的数(获取第三位时,此时sum - (returnSum-2)为6,也就是从第二个数字1的下一个数字开始遍历,遍历到下角标为5的数字,即从135中找出最小值1);
  5. 再从当前位置遍历到sum - (returnSum-3),找到最小的数(获取第三位时,此时sum - (returnSum-3)为7,也就是从第三个数字1的下一个数字开始遍历,遍历到下角标为7的数字,即从354中找出最小值3);
  6. 此时已经找到了4个数字,即1113。

我相信,屏幕前,聪明的你,已经找到了思路。

五、Java算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);String num1 = sc.nextLine();int removeSum = Integer.valueOf(sc.nextLine());// 数字num1的长度int sum = num1.length();// 剩余字符串的长度int returnSum = num1.length() - removeSum;// 当前下角标int currentIndex = 0;// 返回的最小数字String ret = "";// 寻找第几位数字int index = 1;while (ret.length() < returnSum){// 求当前位的最小值int min = Integer.MAX_VALUE;// 获取第index位的最小数for (int i = currentIndex; i < sum - (returnSum - index); i++) {// char转intint temp = num1.charAt(i) - '0';min = Integer.min(min, temp);}// 获取第index位的最小数的下角标for (int i = currentIndex; i < sum - (returnSum - index); i++) {if(num1.charAt(i) - '0' == min){currentIndex = i;break;}}ret = ret + "" + min;// 下一次从当前位的下一位开始遍历currentIndex++;// 开始遍历下一位index++;}System.out.println(ret);
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


https://www.xjx100.cn/news/663780.html

相关文章

本地使用AutoML-nni进行超参数调优实验

目的&#xff1a;在自己的代码中NNI工具&#xff0c;进行超参数自动调优训练自己的项目&#xff0c;得到精度最高的一组超参数。 nni地址&#xff1a; GitHub - microsoft/nni: An open source AutoML toolkit for automate machine learning lifecycle, including feature e…

查看和修改Oracle数据库字符集

1、查询oracle server端的字符集 SQL> select userenv(language) from dual;USERENV(LANGUAGE) ---------------------------------------------------- AMERICAN_AMERICA.ZHS16GBK或者SQL> set line 150 SQL> col parameter for a30 SQL> col value for a30 SQL&…

Scalable IO in Java(Reactor模式)

原文链接&#xff1a;https://gee.cs.oswego.edu/dl/cpjslides/nio.pdf 百度网盘&#xff1a;https://pan.baidu.com/s/1N3JYSg7yLiTAyMqy84Kz-Q?pwd634s 译文&#xff1a;https://www.cnblogs.com/dafanjoy/p/11217708.html

抽丝剥茧Reactor模式

今天在看书的时候看到了一个新的设计模式——Reactor模式&#xff0c;这个模式是出现在NIO中&#xff0c;至于这到底是个什么模式&#xff0c;今天我们来细说一下。 一、是什么 1、概念 reactor设计模式&#xff0c;是一种基于事件驱动的设计模式。Reactor框架是ACE各个框架中…

Reactor模式详解(转)

在学习netty源码以前&#xff0c;需要熟悉JDK 中的NIO&#xff0c;多线程&#xff1b;了解一些设计模式&#xff1a;例如工厂方法、抽象工厂、建造者、外观、代理等&#xff1b;还有NIO的Reactor和AIO的Proactor模式。下边我转了两篇关于Reactor和Proactor相关内容的文章&#…

java reactor模式例子_回顾 Reactor 模式

Reactor 作为网络编程库的核心模式的 Reactor 模式是网络编程中的最常用的模式,反应器 Reactor 又名分派器 Dispatcher, 或通知器 Notifier, 重温一下 POSA2 是对这个模式的描述 语境 An event-driven application that receives multiple service requests simultaneously, b…

Java I/O中的Reactor模式

传统I/O模式 我们之前的的I/O文章中有过如下这种图&#xff1a; 如上模型中&#xff0c;存在的问题 当并发数量很大的时候&#xff0c;会创建大量的线程&#xff0c;占用很大的系统资源当连接创建后&#xff0c;如果当前线程暂时没有可以读的数据&#xff0c;那么改县城会阻塞…

什么是 reactor 模式

在网上看了很多reactor 模式&#xff0c;每个都是各有千秋&#xff0c;这里我写一下自己对reactor 模式感悟。 1. Reactor模式是什么 反应器设计模式(Reactor pattern)是一种为处理并发服务请求&#xff0c;并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请…