leetcode 179 題 最大數

2021-09-05 09:41:49 字數 1081 閱讀 4042

leetcode 179 題 題目:最大數

題目描述:

給定一組非負整數,重新排列它們的順序使之組成乙個最大的整數。

示例 1:   輸入:[10,2]輸出:210

示例 2:   輸入:[3,30,34,5,9]輸出:9534330

說明: 輸出結果可能非常大,所以你需要返回乙個字串而不是整數。

解決思路:

arrays.sort()方法的使用,public static void sort( t  a, comparator

<? super t>  c)

首先由static可以看出這是乙個類方法,通過類arrays來呼叫,其次,該方法有兩個輸入的引數,乙個是需要排序的陣列a,而且是使用了泛型,任意型別都可以進行排序;其次,乙個引數是乙個comparator物件,該物件定義了對陣列a進行排序所採用的規則,我們通常在使用arrays.sort時,都是使用預設的比較器,即按照數值大小進行比較,但此題我們需要自定義乙個比較器,要實現自定義的比較器就需要自己寫乙個類,該類實現了comparator介面,並在類中重寫comparator中的方法compare,從而實現我們自定義的比較規則。仔細閱讀此題,我們在對兩個元素(例如a,b)進行排序時,應該按照如下的排序規則,將a放在前面,將b放在後面和將b放在前面,將a放在後面,比較這兩種情況下哪一種排列所得的新數是較大的(如果a,b都是字串的話,就比較容易了,字串可以進行拼接,整數的話將會非常麻煩),我們的排序結果就是所得新數較大的情況下的排列方式。

綜上所述,我們首先需要將需要排序的整數陣列轉成字串陣列(因為字串的拼接十分方便),然後呼叫arrays.sort()並傳入我們自定義的比較器物件進行排序,將排序結果拼接成乙個字串返回,由於在測試時發現測試用例中有「00」這種連零、全零的測試用例,因此應該判斷排序後的結果,如果第乙個字元就是零,也就對應這種連零、全零的情況,應該直接返回「0」。

實現**如下:

class solution 

}public string largestnumber(int nums)

}

LeetCode 179 最大數(排序)

給定一組非負整數,重新排列它們的順序使之組成乙個最大的整數。示例 1 輸入 10,2 輸出 210 示例 2 輸入 3,30,34,5,9 輸出 9534330 說明 輸出結果可能非常大,所以你需要返回乙個字串而不是整數。需要將傳入的陣列,按照指定的規則進行排序,最後再將排序陣列中的元素從頭到尾,新...

leetcode 179 最大數 解題報告

給定一組非負整數,重新排列它們的順序使之組成乙個最大的整數。示例 1 輸入 10,2 輸出 210示例 2 輸入 3,30,34,5,9 輸出 9534330說明 輸出結果可能非常大,所以你需要返回乙個字串而不是整數。這道題目非常有意思。讀完題之後,我們可以得到乙個初步的方案 由於無論怎麼排,最佳的...

leetcode題 179 最大數(中等)

一 題目描述 179.最大數 中等 給定一組非負整數,重新排列它們的順序使之組成乙個最大的整數。示例 1 輸入 10,2 輸出 210 示例 2 輸入 3,30,34,5,9 輸出 9534330 說明 輸出結果可能非常大,所以你需要返回乙個字串而不是整數。二 解題思路 對陣列進行排序,排序的比較函...