码迷,mamicode.com
首页 > 编程语言 > 详细

剑指 Offer 45. 把数组排成最小的数

时间:2021-01-20 11:43:00      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:problem   需要   make   return   而不是   blank   get   ret   min   

剑指 Offer 45. 把数组排成最小的数

地址: 剑指 Offer 45. 把数组排成最小的数

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

示例 1:

输入: [10,2]
输出: "102"
示例 2:

输入: [3,30,34,5,9]
输出: "3033459"

提示:

0 < nums.length <= 100
说明:

输出结果可能非常大,所以你需要返回一个字符串而不是整数
拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0


import "strconv"
func minNumber(nums []int) string {
    str := make([]string, len(nums))
    for i := 0; i < len(str); i++ {
        str[i] = strconv.Itoa(nums[i]) 
    }

    quickSort(str, 0, len(nums)-1)
    
    ans := ""
    for _, v := range str {
        ans += string(v)
    }
    return ans
}

func quickSort(str []string, left, right int) {
    if left >= right {return}
    x, i, j := str[left], left-1, right+1
    for i < j {
        i += 1
        for str[i] + x < x + str[i] {
            i += 1
        }

        j -= 1
        for str[j] + x > x + str[j] {
            j -= 1
        }

        if i < j {
            str[i], str[j] = str[j], str[i]
        } 
    }
    quickSort(str, left, j)
    quickSort(str, j+1, right)
}

剑指 Offer 45. 把数组排成最小的数

标签:problem   需要   make   return   而不是   blank   get   ret   min   

原文地址:https://www.cnblogs.com/ganshuoos/p/14297436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!