379.Reorder array to construct the minimum number-将数组重新排序以构造最小值(中等题)

Elasticsearch 8.17.1 JAVA工具类 整理了Elasticsearch8.17最新版的API工具类 阅读详情

将数组重新排序以构造最小值

  1. 题目

    给定一个整数数组,请将其重新排序,以构造最小值。

  2. 样例

    给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字:
    3+32+321=332321
    3+321+32=332132
    32+3+321=323321
    32+321+3=323213
    321+3+32=321332
    321+32+3=321323
    其中,最小值为 321323,所以,将数组重新排序后,该数组变为 [321, 32, 3]。

  3. 挑战

    在原数组上完成,不使用额外空间。

  4. 题解

    本题类似于184.Largest Number-最大数(中等题),是求最小数。但是由于题目要求不能使用额外空间,则需要我们自己实现排序算法(这里使用的是快排算法),元素大小比较可参见184题。

public class Solution {
    /**
     * @param nums n non-negative integer array
     * @return a string
     */
    public String minNumber(int[] nums) {
        StringBuilder sb = new StringBuilder();
        quickSort(nums,0,nums.length-1);
        for (int i=0;i<nums.length;i++)
        {
            if (sb.length() == 0 && nums[i] == 0)
            {
                continue;
            }
            sb.append(String.valueOf(nums[i]));
        }
        return sb.length() == 0 ? "0" : sb.toString();
    }

    private int compare(int o1, int o2)
    {
        return (String.valueOf(o1)+String.valueOf(o2)).compareTo(String.valueOf(o2)+String.valueOf(o1));
    }

    private void quickSort(int[] a, int left, int right)
    {
        if (left < right)
        {
            int temp = a[left];
            int i = left;
            int j = right;
            while (i < j)
            {
                while (j > i && compare(a[j],temp) >=0)
                {
                    j--;
                }
                while (i < j && compare(a[i],temp) <= 0)
                {
                    i++;
                }
                if (i < j)
                {
                    swap(a, i, j);
                }
            }
            swap(a, left, j);
            quickSort(a,left,i-1);
            quickSort(a, i+1, right);
        }
    }

    private void swap(int[] a, int i, int j)
    {
        int temp = a[j];
        a[j] = a[i];
        a[i] = temp;
    }
}

Last Update 2016.11.11

Jetson Nano 实战指南:深度学习环境配置与 YOLOv5 边缘端部署解析 Jetson Nano是NVIDIA推出的嵌入式AI开发板,凭借其强大的GPU计算能力和完善的软件生态系统,成为边缘AI部署的理想平台。本教程源于作者团队参加2024中国机器人大赛暨RoboCup机器人世界杯中国赛机器人先进视觉3D识别赛道的实战经验,是一份经过验证的环境部署指南。 阅读详情

相关推荐

CST实战:变容二极管电容曲线提取全流程(附S参数设置技巧)

本文详细介绍了在CST Studio Suite中提取变容二极管电容-电压(C-V)曲线的完整实战流程。重点解析了S参数仿真的核心原理、DCFEED模块的正确配置、参数扫描的设置技巧,并探讨了集成SPICE模型进行精确仿真的方法,帮助射频工程师高效、准确地获取器件关键特性。

weixin_29237635的博客 529

数组-将数组重新排序以构造最小值-中等

描述给定一个整数数组,请将其重新排序,以构造最小值。The result may be very large, so you need to return a string instead of an integer.样例给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字:3+32+321=3323213+321+32=33213232+3+321=32332132+32...

披着鲨鱼皮的海盗 283

Python遥感技术实战:NDWI与MNDWI水体提取算法对比与优化

本文详细对比了NDWI与MNDWI两种水体提取算法在Python遥感技术中的应用。通过实战代码演示,分析了二者在自然与城镇场景下的表现差异,并重点介绍了阈值优化与后处理技巧,旨在帮助读者掌握高效、精准的水体提取方法,提升遥感数据分析能力。

f6g7h8i9j的博客 499

剑指offer:将数组重新排序以构造最小值

给定一个整数数组,请将其重新排序,以构造最小值。 注意事项The result may be very large, so you need to return a string instead of an integer.样例给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字:3+32+321=332321 3+321+32=332132 32+3+321=323321...

cosmos_lee 264

模拟IC设计实战:折叠式共源共栅放大器的参数优化与噪声抑制

本文深入探讨了折叠式共源共栅放大器的核心设计要点。针对低电压下增益与输出摆幅的矛盾,文章详细阐述了从套筒式结构转向折叠式结构的必要性,并重点分析了其参数优化与噪声抑制的实战方法。通过手把手的参数计算流程,指导如何平衡增益、带宽、摆幅与功耗。同时,深入剖析了噪声来源,强调了采用PMOS输入对管以抑制1/f噪声,并提供了针对共栅管及电流镜的噪声优化策略,是模拟IC设计中高性能放大器设计的实用指南。

vv45678的博客 978

西门子1200与FANUC机器人Profinet通讯

近期在做发那科FANUC的通讯,会吧CC-LINK、Profibus-DP、Profinet I/O、DeviceNet、EtherNet/IP这些常用通讯做成文档发上来,大家喜欢的话可以关注 注:做对应的通讯,在机器人控制柜都需要安装对应的板卡以及软件功能 PLC项目已经归档,只需要恢复就可以看到。对应Profinet通讯的GSD文件也都在博文最后有连接 机器人柜子:R-30IB Mate 机器人主体:M-10IA 12 一、硬件介绍 机器人Profinet I/O通讯板卡:...

七兔自习室 2万+

lintcode----将数组重新排序以构造最小值

题目描述: 给定一个整数数组,请将其重新排序,以构造最小值。 样例: 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字: 3+32+321=332321 3+321+32=332132 32+3+321=323321 32+321+3=323213 321+3+32=321332 321+32+3=321323 其中,最小值为 321323,所以,将数组重

一直在路上的羊的博客 329

描边盛开火玫瑰

python描边盛开火玫瑰 代码如下 import turtle as t t.setup(800,800) t.hideturtle() t.speed(11) t.penup() t.goto(50,-450) t.pensize(5) t.pencolor("black") t.seth(140) t.pendown() t.speed(10) t.circle(-300,60) t.fd(100) #jiaodu80 #1ye t.seth(10) t.fd(50) t.fillcolor("gr

weixin_50973371的博客 2065

将数组重新排序以构造最小值

给定一个整数数组,请将其重新排序,以构造最小值。 样例 样例 1: 输入:[2, 1] 输出:[1, 2] 解释:通过将数组重新排序,可构造 2 个可能性数字: 1+2=12 2+1=21 其中,最小值为 12,所以,将数组重新排序后,该数组变为 [1, 2]。 样例 2: 输入:[3, 32, 321] 输出:[321, 32, 3] ...

weixin_41791402的博客 252

通达信+大智慧数据同步存调DLL

数据同步存调DLL(通达信版+大智慧版)

guleba的博客 2054

GeoServer下载与安装(详细图文教程)

GeoServer官方版可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。

大剑师兰特的GIS世界 3276

【一次过】Lintcode 379. 将数组重新排序以构造最小值

给定一个整数数组,请将其重新排序,以构造最小值。 样例 样例 1: 输入:[2, 1] 输出:[1, 2] 解释:通过将数组重新排序,可构造 2 个可能性数字: 1+2=12 2+1=21 其中,最小值为 12,所以,将数组重新排序后,该数组变为 [1, 2]。 样例 2: 输入:[3, 32, 321] 输出:[321, 32, 3] ...

majichen95的博客 283

【Python_PySide6学习笔记(二十四)】菜单栏QMenuBar类的基本用法

此篇文章中介绍 PySide6 中 QMenuBar 类的基本用法,包括"创建菜单栏"、"创建一级菜单"、"创建二级菜单"等,会持续更新,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。

禾戊之昂的博客 1625

#379 Reorder array to construct the minimum number

题目描述:  This problem is in a contest: Career Fair Warm Up I . Submit your code and see your ranking! Construct minimum number by reordering a given non-negative integer array. Arrange them

易水居 566

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Lintcode379 Reorder array to construct the minimum number solution 题解

【题目描述】 Construct minimum number by reordering a given non-negative integer array. Arrange them such that they form the minimum number. Notice:The...

chuwangsheng7603的博客 180

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

lintcode(379)将数组重新排序以构造最小值

Description: 给定一个整数数组,请将其重新排序,以构造最小值。  注意事项 The result may be very large, so you need to return a string instead of an integer. Explanation: 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性

sunday0904的博客 711

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Lintcode 将数组重新排序以构造最小值

给定一个整数数组,请将其重新排序,以构造最小值。  注意事项 The result may be very large, so you need to return a string instead of an integer. 您在真实的面试中是否遇到过这个题?  Yes 样例 给定 [3, 32, 321],通过将数组重新排序

HK_John的博客 746

LintCode379 将数组重新排序以构造最小值

给定一个整数数组,请将其重新排序,以构造最小值。 样例 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字: 3+32+321=332321 3+321+32=332132 32+3+321=323321 32+321+3=323213 321+3+32=321332 321+32+3=321323 其中,最小值为 321323,所以,将数组重新排序后,该数组变为 [32...

fruit513的博客 228

lintcode-将数组重新排序以构造最小值

给定一个整数数组,请将其重新排序,以构造最小值。 样例 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字:3+32+321=332321 3+321+32=332132 32+3+321=323321 32+321+3=323213 321+3+32=321332 321+32+3=321323 其中,最小值为 321323,所以,将数组重新排序后,该数组

qq_35975062的博客 901

将数组重新排序以构造最小值-LintCode

给定一个整数数组,请将其重新排序,以构造最小值。注意事项: The result may be very large, so you need to return a string instead of an integer.样例 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字:3+32+321=332321 3+321+32=332132 32+3+321=323

kane的博客 325

Reorder array to construct the minimum number

Reorder array to construct the minimum numberlintcode题目链接1.O(n)Log(n)时间复杂度 直接贴代码。 class Solution { public: /** * @param nums n non-negative integer array * @return a string */

一个不知名码农的专栏 896

LintCode-379.将数组重新排序以构造最小值

将数组重新排序以构造最小值 给定一个整数数组,请将其重新排序,以构造最小值。 注意事项 The result may be very large, so you need to return a string instead of an integer. 样例 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字: 3+32+321=332321 3+321+32=332...

weixin_30645617的博客 122

lintcode[379]将数组重新排序以构造最小值

描述:给定一个整数数组,请将其重新排序,以构造最小值。 样例: 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字:3+32+321=332321 3+321+32=332132 32+3+321=323321 32+321+3=323213 321+3+32=321332 321+32+3=321323 其中,最小值为 321323,所以,将数组重新排序后

qq_18190893的博客 490

[LintCode]379.将数组重新排序以构造最小值

给定一个整数数组,请将其重新排序,以构造最小值。  注意事项 The result may be very large, so you need to return a string instead of an integer. 样例 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字: 3+32+321=332321 3+321+3

天蓝Ada的博客 590

2.7.1 希尔排序及java实现

希尔排序(Shell Sort)是插入排序的一种高效改进版本,也称为。

橘子hhh 176

数据结构:时间复杂度和空间复杂度

若存在正常数 c 和 n₀,使得当 n ≥ n₀ 时,

橘为己有的博客 507
上一篇: 371.Print Numbers by Recursion-用递归打印数字(中等题)
下一篇: 380.Intersection of Two Linked Lists-两个链表的交叉(中等题)
普通网友
博客等级 码龄11年 12粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值