欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go&java算法之最大數(shù)示例詳解

 更新時間:2022年08月16日 11:20:25   作者:黃丫丫  
這篇文章主要為大家介紹了Go&java算法之最大數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

最大數(shù)

給定一組非負整數(shù) nums,重新排列每個數(shù)的順序(每個數(shù)不可拆分)使之組成一個最大的整數(shù)。

注意:輸出結果可能非常大,所以你需要返回一個字符串而不是整數(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;
        // 轉換成包裝類型,以便傳入 Comparator 對象(此處為 lambda 表達式)
        Integer[] numsArr = new Integer[n];
        for (int i = 0; i &lt; n; i++) {
            numsArr[i] = nums[i];
        }
        Arrays.sort(numsArr, (x, y) -&gt; {
            long sx = 10, sy = 10;
            while (sx &lt;= x) {
                sx *= 10;
            }
            while (sy &lt;= 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();
    }
}

時間復雜度:O(nlognlogm)

空間復雜度:O(logn)

方法一:排序(go)

具體的方法思路已經(jīng)在上文中表述,詳情請看上文內(nèi)容。

1.核心為插入排序

2.比大小的函數(shù),相加的兩種string結果,然后比較各位大小。

3.將排序的結果累加

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 &lt;= x {
            sx *= 10
        }
        for sy &lt;= y {
            sy *= 10
        }
        return sy*x+y &gt; sx*y+x
    })
    if nums[0] == 0 {
        return "0"
    }
    ans := []byte{}
    for _, x := range nums {
        ans = append(ans, strconv.Itoa(x)...)
    }
    return string(ans)
}

時間復雜度:O(nlognlogm)

空間復雜度:O(logn)

以上就是Go&amp;java算法之最大數(shù)示例詳解的詳細內(nèi)容,更多關于Go java算法最大數(shù)的資料請關注腳本之家其它相關文章!

  • Java使用easyExcel導出excel數(shù)據(jù)案例

    Java使用easyExcel導出excel數(shù)據(jù)案例

    這篇文章主要介紹了Java使用easyExcel導出excel數(shù)據(jù)案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 詳解Java編譯優(yōu)化之循環(huán)展開和粗化鎖

    詳解Java編譯優(yōu)化之循環(huán)展開和粗化鎖

    之前在講JIT的時候,有提到在編譯過程中的兩種優(yōu)化循環(huán)展開和粗化鎖,今天從Assembly的角度來驗證一下這兩種編譯優(yōu)化方法,快來看看吧。
    2021-06-06
  • Spring Boot中使用activiti的方法教程(一)

    Spring Boot中使用activiti的方法教程(一)

    最近一直研究springboot,下面這篇文章主要給大家介紹了關于Spring Boot中使用activiti的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-08-08
  • Java GUI圖形界面開發(fā)實現(xiàn)小型計算器流程詳解

    Java GUI圖形界面開發(fā)實現(xiàn)小型計算器流程詳解

    本文章向大家介紹Java GUI圖形界面開發(fā)實現(xiàn)小型計算器,主要包括布局管理器使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • 十分鐘理解Java中的動態(tài)代理

    十分鐘理解Java中的動態(tài)代理

    十分鐘幫助大家理解Java中的動態(tài)代理,什么是動態(tài)代理?感興趣的小伙伴們可以參考一下
    2016-06-06
  • 詳解在spring boot中配置多個DispatcherServlet

    詳解在spring boot中配置多個DispatcherServlet

    本篇文章主要介紹了詳解在spring boot中配置多個DispatcherServlet,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • JDBC數(shù)據(jù)庫連接過程及驅動加載與設計模式詳解

    JDBC數(shù)據(jù)庫連接過程及驅動加載與設計模式詳解

    這篇文章主要介紹了JDBC數(shù)據(jù)庫連接過程及驅動加載與設計模式詳解,需要的朋友可以參考下
    2016-10-10
  • mybatis中實現(xiàn)枚舉自動轉換方法詳解

    mybatis中實現(xiàn)枚舉自動轉換方法詳解

    在使用mybatis的時候經(jīng)常會遇到枚舉類型的轉換,下面這篇文章主要給大家介紹了關于mybatis中實現(xiàn)枚舉自動轉換的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • IntelliJ IDEA基于Scala實現(xiàn)Git檢查工具

    IntelliJ IDEA基于Scala實現(xiàn)Git檢查工具

    這篇文章主要介紹了如何使用Scala實現(xiàn)自定義的Git檢查工具,大家可以基于本文的示例進行擴展與實現(xiàn),也可以進行其他應用方向的嘗試,感興趣的可以了解下
    2023-08-08
  • 最新評論