Go&java算法之最大數(shù)示例詳解
最大數(shù)
給定一組非負整數(shù) nums,重新排列每個數(shù)的順序(每個數(shù)不可拆分)使之組成一個最大的整數(shù)。
注意:輸出結(jié)果可能非常大,所以你需要返回一個字符串而不是整數(shù)。
- 示例 1:
輸入:nums = [10,2]
輸出:"210"
- 示例 2:
輸入:nums = [3,30,34,5,9]
輸出:"9534330"
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 109
方法一:排序(java)
要想組成最大的整數(shù),一種直觀的想法是把數(shù)值大的數(shù)放在高位。
于是我們可以比較輸入數(shù)組的每個元素的最高位,最高位相同的時候比較次高位
以此類推,完成排序,然后把它們拼接起來。這種排序方式對于輸入數(shù)組 沒有相同數(shù)字開頭 的時候是有效的
class Solution {
public String largestNumber(int[] nums) {
int n = nums.length;
// 轉(zhuǎn)換成包裝類型,以便傳入 Comparator 對象(此處為 lambda 表達式)
Integer[] numsArr = new Integer[n];
for (int i = 0; i < n; i++) {
numsArr[i] = nums[i];
}
Arrays.sort(numsArr, (x, y) -> {
long sx = 10, sy = 10;
while (sx <= x) {
sx *= 10;
}
while (sy <= y) {
sy *= 10;
}
return (int) (-sy * x - y + sx * y + x);
});
if (numsArr[0] == 0) {
return "0";
}
StringBuilder ret = new StringBuilder();
for (int num : numsArr) {
ret.append(num);
}
return ret.toString();
}
}
時間復(fù)雜度:O(nlognlogm)
空間復(fù)雜度:O(logn)
方法一:排序(go)
具體的方法思路已經(jīng)在上文中表述,詳情請看上文內(nèi)容。
1.核心為插入排序
2.比大小的函數(shù),相加的兩種string結(jié)果,然后比較各位大小。
3.將排序的結(jié)果累加
func largestNumber(nums []int) string {
sort.Slice(nums, func(i, j int) bool {
x, y := nums[i], nums[j]
sx, sy := 10, 10
for sx <= x {
sx *= 10
}
for sy <= y {
sy *= 10
}
return sy*x+y > sx*y+x
})
if nums[0] == 0 {
return "0"
}
ans := []byte{}
for _, x := range nums {
ans = append(ans, strconv.Itoa(x)...)
}
return string(ans)
}
時間復(fù)雜度:O(nlognlogm)
空間復(fù)雜度:O(logn)
以上就是Go&java算法之最大數(shù)示例詳解的詳細內(nèi)容,更多關(guān)于Go java算法最大數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決idea spring boot 修改html等不重啟即時生效的問題
這篇文章主要介紹了解決idea spring boot 修改html等不重啟即時生效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
SpringBoot獲取HttpServletRequest的3種方式總結(jié)
這篇文章主要給大家介紹了關(guān)于SpringBoot獲取HttpServletRequest的3種方式,在Spring boot項目中經(jīng)常要用到Servlet的常用對象如HttpServletRequest request,HttpServletResponse response,HttpSession session,需要的朋友可以參考下2023-08-08
完美解決java.lang.OutOfMemoryError處理錯誤的問題
下面小編就為大家?guī)硪黄昝澜鉀Qjava.lang.OutOfMemoryError處理錯誤的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
SpringCloud turbine監(jiān)控實現(xiàn)過程解析
這篇文章主要介紹了SpringCloud turbine監(jiān)控實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12
mybatis中foreach報錯:_frch_item_0 not found的解決方法
這篇文章主要給大家介紹了mybatis中foreach報錯:_frch_item_0 not found的解決方法,文章通過示例代碼介紹了詳細的解決方法,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06
Java實現(xiàn)經(jīng)典游戲推箱子的示例代碼
《推箱子》推箱子是一個古老的游戲,目的是在訓(xùn)練你的邏輯思考能力。本文將利用Java實現(xiàn)這一經(jīng)典的小游戲,并采用了swing技術(shù)進行了界面化處理,需要的可以參考一下2022-02-02
SpringBoot集成Milvus實現(xiàn)數(shù)據(jù)增刪改查功能
milvus支持的語言比較多,支持python, Java, Go,node等開發(fā)語言,本文主要介紹如何使用Java語言,采用springboot框架集成和調(diào)用Milvus數(shù)據(jù)庫,這篇文章主要介紹了SpringBoot集成Milvus,實現(xiàn)數(shù)據(jù)增刪改查,需要的朋友可以參考下2025-04-04

