【华为OD-E卷 - 115 数组组成的最小数字 100分(python、java、c++、js、c)】

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

题目

给定一个整型数组,请从该数组中选择3个元素组成最小数字并输出
(如果数组长度小于3,则选择数组中所有元素来组成最小数字)

输入描述

  • 一行用半角逗号分割的字符串记录的整型数组,0 < 数组长度 <= 100,0 < 整数的取值范围 <= 10000

输出描述

  • 由3个元素组成的最小数字,如果数组长度小于3,则选择数组中所有元素来组成最小数字

用例

用例一:
输入:
21,30,62,5,31
输出:
21305
用例二:
输入:
5,21
输出:
215

python解法

  • 解题思路:
  • 本题的目标是从字符串数组 arr 中选出 3 个元素,并组合成最小的数字。我们采用全排列的方法来解决,具体步骤如下:

如果数组长度小于 3

直接对数组进行排序,并拼接成字符串返回(因为所有元素都需要用上,排序后拼接保证最小)。
生成所有可能的 3 元素排列

使用 itertools.permutations(arr, 3) 生成 arr 中所有长度为 3 的排列。
通过 ‘’.join§ 将排列的元组转换为字符串,并转换成整数,以便进行比较。
找到最小的组合

使用 min() 获取所有排列组合中的最小值,并转换为字符串返回

from itertools import permutationsdef smallest_number(arr):# 如果数组长度小于3,则直接对数组排序并拼接if len(arr) < 3:return ''.join(sorted(arr))# 生成所有可能的 3 个元素的排列,并找出最小的组合min_number = min(int(''.join(p)) for p in permutations(arr, 3))return str(min_number)# 读取输入,按逗号分割成数组
strs = input().split(",")# 输出最小的组合数字
print(smallest_number(strs))

java解法

  • 解题思路
  • 本题的目标是从字符串数组 strs 中选出 3 个最小的元素,并按照最小的拼接方式组合成字符串。具体实现步骤如下:

按照数值大小排序

先将 strs 中的字符串转换为整数,并按数值大小排序(Integer::parseInt)。
取出 最小的 3 个元素。
按拼接结果排序

对这 3 个元素进行自定义排序:
比较 a + b 和 b + a,如果 a + b 小于 b + a,则 a 应该排在 b 前面。
例如,“30” 和 “3”,因为 “303” < “330”,所以 “30” 应该在前。
拼接字符串

通过 String.join(“”, sortedList) 将排序后的字符串列表合并,得到最终结果

import java.util.*;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] strs = sc.nextLine().split(","); // 读取输入并按逗号分割System.out.println(findResult(strs)); // 计算结果并输出}public static String findResult(String[] strs) {// 先按照数值大小排序,并取最小的 3 个元素List<String> sortedList = Arrays.stream(strs).sorted(Comparator.comparingInt(Integer::parseInt)) // 数值排序.limit(3) // 取最小的 3 个元素.sorted((a, b) -> (a + b).compareTo(b + a)) // 按拼接结果排序.collect(Collectors.toList());// 拼接排序后的字符串列表并返回return String.join("", sortedList);}
}

C++解法

  • 解题思路
  • 本题的目标是从字符串数组 strs 中选出 3 个最小的元素,并按照最小的拼接方式组合成字符串。具体步骤如下:

按数值大小排序

将 strs 中的字符串转换为整数,并按数值大小排序(使用 stoi(a) < stoi(b) 进行比较)。
这样可以确保最小的 3 个数字被选中。
取出最小的 3 个元素,并按拼接规则排序

选取排序后的前 3 个元素(如果 strs 长度小于 3,则全部选取)。
按照拼接规则排序:
比较 a + b 和 b + a,如果 a + b 小于 b + a,则 a 应该排在 b 前面。
例如,“30” 和 “3”,因为 “303” < “330”,所以 “30” 应该在前。
拼接字符串

依次将排序后的字符串连接在一起,形成最终的最小组合

#include <iostream>
#include <vector>
#include <sstream>
#include <algorithm>using namespace std;string findResult(vector<string>& strs) {// 按照数值大小排序sort(strs.begin(), strs.end(), [](const string& a, const string& b) {return stoi(a) < stoi(b); // 将字符串转换为整数并比较大小});// 取前3个元素(如果不足3个,则取所有)vector<string> sortedList(strs.begin(), strs.begin() + min(3, (int)strs.size()));// 按拼接规则排序,确保最小的拼接顺序sort(sortedList.begin(), sortedList.end(), [](const string& a, const string& b) {return (a + b) < (b + a); // 按照字符串拼接后的字典序进行比较});// 拼接排序后的字符串列表string result;for (const string& s : sortedList) {result += s;}return result;
}int main() {string input;getline(cin, input); // 读取整行输入stringstream ss(input);string token;vector<string> strs;// 按逗号分割输入while (getline(ss, token, ',')) {strs.push_back(token);}// 输出结果cout << findResult(strs) << endl;return 0;
}

C解法

  • 解题思路

更新中

JS解法

  • 解题思路

  • 本题的目标是从输入的字符串数组 strs 中选出 3 个最小的元素,并按照最小的拼接方式组合成字符串。具体步骤如下:

过滤非数字字符串

通过 isNaN(parseInt(str)) 过滤掉无法转换为数字的字符串,确保输入是有效的数字字符串。
按数值大小排序

将 strs 转换为整数,并按照数值大小升序排序(parseInt(a) - parseInt(b))。
这样可以确保最小的 3 个数字被选中。
取出最小的 3 个元素,并按拼接规则排序

选取排序后的前 3 个元素(如果 strs 长度小于 3,则全部选取)。
按照拼接规则排序:
比较 a + b 和 b + a 的字典序,确保最小的拼接顺序。
例如,“30” 和 “3”,因为 “303” < “330”,所以 “30” 应该在前。
拼接字符串

依次将排序后的字符串连接在一起,形成最终的最小组合

const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});rl.on("line", (line) => {const strs = line.split(","); // 读取输入并按逗号分割console.log(findResult(strs)); // 计算结果并输出
});function findResult(strs) {// 过滤掉非数字项,并按数值大小排序strs = strs.filter(str => !isNaN(parseInt(str))) // 过滤无效输入.sort((a, b) => parseInt(a) - parseInt(b)) // 数值排序.slice(0, 3) // 取最小的 3 个元素.sort((a, b) => (a + b).localeCompare(b + a)); // 按拼接顺序排序// 拼接排序后的字符串并返回return strs.join('');
}

注意:

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

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

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

相关文章

在Vue3 + Vite 项目中使用 Tailwind CSS 4.0

文章目录 首先是我的package.json根据官网步骤VS Code安装插件验证是否引入成功参考资料 首先是我的package.json {"name": "aplumweb","private": true,"version": "0.0.0","type": "module","s…

AURIX TC275学习笔记4 官方GTM例程 GTM_TOM_PWM_1

文章目录 概述其他例程 代码分析IfxGtm_enable()IfxGtm_Cmu_enableClocks&#xff08;&#xff09;IfxGtm_Tom_Pwm_initConfig&#xff08;&#xff09;IfxGtm_Tom_Pwm_init&#xff08;&#xff09;IfxGtm_Tom_Pwm_start&#xff08;&#xff09;fadeLED() 概述 目的&#xf…

ASP.NET Core中间件的概念及基本使用

什么是中间件 中间件是ASP.NET Core的核心组件&#xff0c;MVC框架、响应缓存、身份验证、CORS、Swagger等都是内置中间件。 广义上来讲&#xff1a;Tomcat、WebLogic、Redis、IIS&#xff1b;狭义上来讲&#xff0c;ASP.NET Core中的中间件指ASP.NET Core中的一个组件。中间件…

app专项测试(网络测试流程)

一、网络测试的一般流程 step1&#xff1a;首先要考虑网络正常的情况 ① 各个模块的功能正常可用 ② 页面元素/数据显示正常 step2&#xff1a;其次要考虑无网络的情况 ① APP各个功能在无网络情况下是否可用 ② APP各个页面之间切换是否正常 ③ 发送网络请求时是…

【数据结构】_复杂度

目录 1. 算法效率 2. 时间复杂度 2.1 时间复杂度概念 2.2 准确的时间复杂度函数式 2.3 大O渐进表示法 2.4 时间复杂度的常见量级 2.5 时间复杂度示例 3. 空间复杂度 3.1 空间复杂度概念 3.2 空间复杂度示例 1. 算法效率 一般情况下&#xff0c;衡量一个算法的好坏是…

ASP.NET Core中间件Markdown转换器

目录 需求 文本编码检测 Markdown→HTML 注意 实现 需求 Markdown是一种文本格式&#xff1b;不被浏览器支持&#xff1b;编写一个在服务器端把Markdown转换为HTML的中间件。我们开发的中间件是构建在ASP.NET Core内置的StaticFiles中间件之上&#xff0c;并且在它之前运…

Text2Sql:开启自然语言与数据库交互新时代(3030)

一、Text2Sql 简介 在当今数字化时代&#xff0c;数据处理和分析的需求日益增长。对于众多非技术专业人员而言&#xff0c;数据库操作的复杂性常常成为他们获取所需信息的障碍。而 Text2Sql 技术的出现&#xff0c;为这一问题提供了有效的解决方案。 Text2Sql&#xff0c;即文…

将Deepseek接入pycharm 进行AI编程

目录 专栏导读1、进入Deepseek开放平台创建 API key 2、调用 API代码 3、成功4、补充说明多轮对话 总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍&#x1f308; 博客主页&#xff1a;请点击——…

113,【5】 功防世界 web unseping

进入靶场 代码审计 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;方便开发者查看代码结构和内容 highlight_file(__FILE__);// 定义一个名为 ease 的类 class ease {// 私有属性 $method&#xff0c;用于存储要调用的方法名private $method;// 私有属性 $args&…

Android记事本App设计开发项目实战教程2025最新版Android Studio

平时上课录了个视频&#xff0c;从新建工程到打包Apk&#xff0c;从头做到尾&#xff0c;没有遗漏任何实现细节&#xff0c;欢迎学过Android基础的同学参加&#xff0c;如果你做过其他终端软件开发&#xff0c;也可以学习&#xff0c;快速上手Android基础开发。 Android记事本课…

绿联NAS安装cpolar内网穿透工具实现无公网IP远程访问教程

文章目录 前言1. 开启ssh服务2. ssh连接3. 安装cpolar内网穿透4. 配置绿联NAS公网地址 前言 本文主要介绍如何在绿联NAS中使用ssh远程连接后&#xff0c;使用一行代码快速安装cpolar内网穿透工具&#xff0c;轻松实现随时随地远程访问本地内网中的绿联NAS&#xff0c;无需公网…

DNN(深度神经网络)近似 Lyapunov 函数

import torch import torch.nn as nn import torch.optim as optim import matplotlib.pyplot as plt # from torchviz import make_dot import torchviz# 1. Lyapunov 函数近似器&#xff08;MLP 结构&#xff09; class LyapunovNet(nn.Module):def __init__(self, input_dim…

从 HTTP/1.1 到 HTTP/3:如何影响网页加载速度与性能

一、前言 在最近使用Apipost时&#xff0c;突然注意到了http/1.1和http/2&#xff0c;如下图&#xff1a; 在我根深蒂固的记忆中&#xff0c;对于http的理解还停留在TCP协议、三次握手。由于我的好奇心&#xff0c;于是触发了我被动“开卷”&#xff0c;所以有了这篇文章&…

6 加密技术与认证技术

6 加密技术与认证技术 6.1:对称加密与非对称加密技术 6.1.1:对称加密 对称加密:; 特点: 1、加密强度不高&#xff0c;但效率高;2、密钥分发困难。 常见对称密钥&#xff08;共享秘钥&#xff09;加密算法:DES、3DES(三重DES)、RC-5、IDEA算法。 6.1.1.2非对称加密技术 非对称…

【Block总结】CoT,上下文Transformer注意力|即插即用

一. 论文信息 标题: Contextual Transformer Networks for Visual Recognition论文链接: arXivGitHub链接: https://github.com/JDAI-CV/CoTNet 二. 创新点 上下文Transformer模块(CoT): 提出了CoT模块,能够有效利用输入键之间的上下文信息,指导动态注意力矩阵的学习,从而…

pycharm集成通义灵码应用

在pycharm中安装通义灵码 1、打开files-settings 2、选中plugins-搜索”TONGYI Lingma“&#xff0c;点击安装 3.安装完成后在pycharm的右侧就有通义灵码的标签 4、登录账号 5、查看代码区域代码&#xff0c;每一个方法前面都多了通义灵码的标识&#xff0c;可以直接选择…

保姆级教程Docker部署Zookeeper官方镜像

目录 1、安装Docker及可视化工具 2、创建挂载目录 3、运行Zookeeper容器 4、Compose运行Zookeeper容器 5、查看Zookeeper运行状态 6、验证Zookeeper是否正常运行 1、安装Docker及可视化工具 Docker及可视化工具的安装可参考&#xff1a;Ubuntu上安装 Docker及可视化管理…

3.【BUUCTF】XSS-Lab1

进入题目页面如下 好好好&#xff0c;提示点击图片&#xff0c;点进去页面如下&#xff0c;且url中有传参&#xff0c;有注入点 发现题目给出了源码 查看得到本题的源码 分析一下代码 <!DOCTYPE html><!--STATUS OK--> <!-- 声明文档类型为 HTML5&#xff0c;告…

react关于手搓antd pro面包屑的经验(写的不好请见谅)

我们先上代码&#xff0c;代码里面都有注释&#xff0c;我是单独写了一个组件&#xff0c;方便使用&#xff0c;在其他页面引入就行了 还使用了官方的Breadcrumb组件 import React, { useEffect, useState } from react; import { Breadcrumb, Button } from antd; import { …

高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案

目录 一、Ollama 介绍 二、Ollama下载 2.1 官网下载 2.2 GitHub下载 三、模型库 四、Ollmal 使用 4.1 模型运行&#xff08;下载&#xff09; 4.2 模型提问 五、Ollama 常用命令 相关推荐 一、Ollama 介绍 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&…