1. 程式人生 > 資料庫 >mysql常用語句即函式

mysql常用語句即函式

劍指 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)
}