华为OD机试真题 Java 实现【组合出合法最小数】【2023Q1 200分】

news2024/11/23 17:08:45

在这里插入图片描述

一、题目描述

给一个数组,数组里面都是代表非负整数的字符串,将数组里所有的数值排列组合拼接起来组成一个数字,输出拼接成的最小的数字。

二、输入描述

一个数组,数组不为空,数组里面都是代表非负整数的字符串,可以是0开头。

例如:[“13”, “045”, “09”, “56”]。

数组的大小范围:[1, 50]
数组中每个元素的长度范围:[1, 30]

三、输出描述

以字符串的格式输出一个数字,如果最终结果是多位数字,要优先选择输出不是“0”开头的最小数字;如果拼接出的数字都是“0”开头,则选取值最小的,并且把开头部分的“0”都去掉再输出;如果是单位数“0”,可以直接输出“0”。

四、Java算法源码

/**
 * 20 1
 *
 * 120
 */
static List<String> result = new ArrayList<>();
static LinkedList<String> path = new LinkedList<>();
static boolean[] used = null;
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    // 20 1
    String[] arr = sc.nextLine().split(" ");

    // 当前数字是否使用过
    used = new boolean[arr.length];
    Arrays.fill(used, false);
    dfs(arr, 0);

    Collections.sort(result);
    String target = null;
    int i = -1;
    int len = result.get(0).length();
    while (target == null) {
        if (i == len - 1) {
            //System.out.println(0);
            break;
        }
        i++;
        for (String s : result) {
            if (s.charAt(i) != '0') {
                target = s;
                break;
            }
        }
    }
    if (target == null) {
        System.out.println(0);
    } else {
        System.out.println(delZero(target));
    }
}

public static void dfs(String[] strArr, int depth) {
    if (depth == strArr.length) {
        //save
        String res = getPathString(path);
        result.add(res);
        return;
    }
    for (int i = 0; i < strArr.length; i++) {
        if (used[i]){
            continue;
        }
        path.add(strArr[i]);
        used[i] = true;
        dfs(strArr, depth + 1);
        used[i] = false;
        path.removeLast();
    }
}

public static String getPathString(LinkedList<String> path) {
    StringBuilder builder = new StringBuilder();
    for (String str : path) {
        builder.append(str);
    }
    return builder.toString();
}

/**
 * 如果最终结果是多位数字,要优先选择输出不是“0”开头的最小数字
 *
 * 删掉以0开头的数字
 */
public static String delZero(String target) {
    char[] chars = target.toCharArray();
    int pos = 0;
    for (int i = 0; i < chars.length; i++) {
        if (chars[i] != '0') {
            break;
        } else {
            pos++;
        }
    }
    return target.substring(pos);
}

五、效果展示

1、输入

05 12 2

2、输出

12052

3、说明

05 12 2能组成 05122、05212、12052、12205、20512、21205。

如果最终结果是多位数字,要优先选择输出不是“0”开头的最小数字。

故还剩12052、12205、20512、21205。

其中12052最小。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【服务中心选址】【2023Q1 100分 】

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

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

在这里插入图片描述

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

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

相关文章

解读智慧城市建设的关键角色:GIS技术的应用与优势

近年来&#xff0c;随着城市化进程的加快和信息技术的迅猛发展&#xff0c;智慧城市成为了城市发展的重要方向。而在智慧城市建设中&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术的应用正发挥着越来越重要的作用。GIS技术以其独特的地理空间分析能力&#xff0c;为…

龙芯2K1000实战开发-项目整体框架介绍

文章目录 概要整体架构技术名词解释技术细节小结概要 本项目主要以龙芯2k1000为CPU实现整个系统的管理,主要实现数据交换、时间同步和数据监控等功能。项目中龙芯作为一部分存在,考虑到项目涉密的原因,不能将整个项目的应用背景及项目整体方案做介绍,只能将龙芯过程开发做一…

NSSCTF之Web篇刷题记录(12)

NSSCTF之Web篇刷题记录[12] [NCTF 2018]签到题&#xff1a;[鹤城杯 2021]EasyP&#xff1a;[NSSCTF 2022 Spring Recruit]ezgame:[GXYCTF 2019]Ping Ping Ping&#xff1a;[SWPUCTF 2021 新生赛]finalrce&#xff1a;[NISACTF 2022]checkin&#xff1a; NSSCTF平台&#xff1a;…

程序员成长之路有哪些绝对不能踩的坑?

文章目录 一、你在编写代码时&#xff0c;会特别注意哪些流程&#xff1f;二、你在工作过程中踩过哪些坑&#xff1f;你是如何处理的呢&#xff1f;三、结合自身工作经验&#xff0c;分享一下程序员有哪些要避免的坑吧。总结 程序员编写高质量、可维护、安全且高效的代码&#…

【Python文本处理】基于运动路线记录GPX文件解析,心率、速度、时间、功率、踏频、海拔等参数的生成和更改

【Python文本处理】基于运动路线记录GPX文件解析&#xff0c;心率、速度、时间、功率、踏频、海拔等参数的生成和更改 GPX文件本身其实就是坐标、海拔、时间、心率等综合性的xml文件 如图&#xff1a; 海拔&#xff1a;ele 时间&#xff1a;time 心率&#xff1a;heartrate 功…

推荐5个非常强大的ChatGPT浏览器插件|你的生产力提高工具

近期&#xff0c;ChatGPT变得越来越热门&#xff0c;为此&#xff0c;许多浏览器插件也随之问世。这些基于ChatGPT的浏览器插件大大提高了ChatGPT的能力&#xff0c;使得我们能够更高效地在平时的上网、工作和学习中获得帮助&#xff0c;从而节省了大量时间。 今天我来给大家介…

168天,从外包转岗到阿里测开岗.....

本人毕业于某普通二本院校非计算机专业&#xff0c;跨专业入行测试&#xff0c;至今有近 5年工作经验。 第一份测试工作是在腾讯做了两年外包。总体感受就是 这份工作缺乏归属感&#xff0c;心里总有一种落差&#xff0c;进步空间不大&#xff0c; 接触不到核心技术&#xf…

分享以MM32SPIN0280单片机为主控洗衣机方案

洗衣机是利用电能产生机械作用来洗涤衣物的清洁电器&#xff0c;按驱动方法有3类&#xff0c;直接驱动&#xff0c;皮带驱动&#xff0c;波轮式驱动。 主变一体洗衣机方案以MM32SPIN0280为主控 MCU规格&#xff1a; -ArmCortex-M0内核&#xff0c;最高工作频率可达96MHz -128…

软件测试面试至今0 offer的小伙伴,问题到底出在哪儿?

转眼已是五月中旬&#xff0c;求职招聘季也快要结束啦&#xff0c;如果没点真技术 真本事&#xff0c;不了解点职场套路&#xff0c;在今年行情下&#xff0c;找工作可是难上加难。 现在点开微博或者脉脉&#xff0c;只要搜索“招聘”&#xff0c;用“惨不忍睹”来形容也不为过…

《计算机组成原理》期末复习一文总结

文章目录 第1讲&#xff1a;概论一、课程内容课程简介课程教材慕课堂二、课程组成结构计算机系统组成计算机软硬件概念以运算器为中心现代计算机的存储器为中心 硬件各部分关系内存基本组成运算器基本组成累加器&#xff08;相当于寄存器&#xff09; 控制器组成 第2讲&#xf…

[VRTK4.0]设置OpenXRCameraRig

学习目标&#xff1a; 演示如何设置Unity项目以支持OpenXR&#xff0c;以及如何安装VRTK v4TiliaUnitvXRFrameWork用于OpenXR的CameraRig。还展示了如何设置Tilia TrackedAlias预制件可轻松访问底层CameraRig功能。 流程&#xff1a; 步骤一&#xff1a; 我们现在要将我…

【数项级数】敛散性判别

阅读本篇之前&#xff0c;建议可以先看一下上一篇文章哦&#xff01; 【数项级数】无穷个数相加一定是个数吗&#xff1f; 柯西收敛准则判断级数敛散性 基本思想利用柯西收敛准则判断级数是否收敛推论&#xff1a;定理 基本思想 在上一篇文章中&#xff0c;初识数项级数&#…

如果要走网络安全这方面,需要考哪些证呢?

网络工程师VS网络安全工程师&#xff0c;哪个能带你走上人生巅峰&#xff1f; 众所周知&#xff0c;网络安全是以技术为核心的行业&#xff0c;年薪的多少是和技术挂钩的&#xff0c;但是很多没有工作经验的或者想转行到网安的大学生想要找到一份好工作&#xff0c;一个含金量…

Unity 灯光组件Light

灯光简介 在 Hierarchy 窗口右键&#xff0c;选择 Light&#xff0c;再选择具体的灯光类型&#xff0c;在 Inspector 窗口查看灯光组件如下&#xff1a; Type&#xff1a;灯光类型&#xff0c;主要有&#xff1a;Directional&#xff08;平行光&#xff09;、Spot&#xff08;聚…

【OpenStack】初识

云计算中的操作系统&#xff0c;负责计算能力 三大核心组件&#xff1a;子项目nova负责计算能力、neutron(Quantum):Networking网络、Swift&#xff1a;Storage 存储 共享服务&#xff1a;认证服务、数据库服务等 api、dashboard浏览器界面 主要组件&#xff1a; 1. 2. OpenSt…

uniapp在H5获取当前定位信息不需要SDK可直接获取城市(包括经纬度省市区和市区编码)

前言 最近在做获取用户当前定位信息的时候&#xff0c;发现uniapp官方提供的uni.getLocation(OBJECT)兼容性并不是特别好&#xff0c;光注意事项都是密密麻麻一大堆&#xff0c;在实际使用场景下&#xff0c;效果并不理想&#xff0c;也不是很稳定。于是便重新封装了一下腾讯地…

前端web入门-CSS-day03

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 CSS 初体验 CSS 定义 CSS 引入方式 选择器 标签选择器 类选择器 id选择器 通配符选择器 画盒子 …

“智慧赋能 强链塑链”——浅谈核电行业物资供应管理优化新动能

核电备件供应链管理创新的必要性、 迫切性和重要性 核电厂对核电机组的稳定运行和核安全有着非常高的要求&#xff0c;在我国核电发展初期阶段&#xff0c;核电厂为了提高机组的安全稳定运行&#xff0c;通常都备有种类多、数量大的备品备件。经过多年的运营&#xff0c;现役…

华为、思科、Juniper 三厂商NAT配置详解

大家好&#xff0c;这里是网络技术联盟站。 本文给大家介绍华为、思科、Juniper 三大厂商NAT配置详解。 1. 华为&#xff08;Huawei&#xff09; 华为是一家全球领先的信息与通信技术解决方案供应商&#xff0c;其网络设备提供了强大的NAT功能。 下面是华为设备上的NAT配置示…

C语言——自定义数据类型

C语言自定义数据类型——结构体、共用体、枚举 目录 一、 结构体的基本用法1.1 定义1.2 定义格式1.3 结构体变量1.3.1 概念1.3.2 格式1.3.3 定义结构体变量(1) 先定义结构体&#xff0c;再定义结构体变量。(2) 定义结构体的同时&#xff0c;定义结构体变量。 1.3.4 结构体变量…