給定一組非負整數,重新排列它們的順序使之組成乙個最大的整數。
示例 1:
輸入: [10,2]
輸出: 210
示例 2:
輸入: [3,30,34,5,9]
輸出: 9534330
說明: 輸出結果可能非常大,所以你需要返回乙個字串而不是整數。
需要將傳入的陣列,按照指定的規則進行排序,最後再將排序陣列中的元素從頭到尾,新增到乙個字串中返回。本題難點在於自己定義排序規則。降序排序規則如下:
(1)當兩個數的高位不同,高位大的數排在前面。
(2)當兩個數的高位相同,且位數相同時,從左到右比較每一位的數,大的排在前面。比如[30,34],排序後為[34,30]。
(3)當兩個數的高位相同,且位數不同時,如[32, 321],對於321而言,32後面的每一位都需要大於32的首位3,才能排到前面排序後為[32,321]。如果[32, 324],排序後為[324,32]。
(4)當兩個數的高位相同,且位數不同時,如[12,121],當按照(3)的規則無法判斷,因為121後面的1,與12的首位1相同,這時需要比較12的末尾2,與121的末尾1之間的大小關係。因此排序後為[12,121]。
(5)需要考慮,所有元素均相同的情況。
(6)需要考慮,輸出的字串不能為「01」,「00」之類的結果。
bool comp(const int& a, const int& b)
if(ls[ln-1] != rs[rn-1]) //如121和12的情況,需要比較兩個字串的末尾字元
return ls[ln-1] > rs[rn-1];
return false; //全都相等的情況
leetcode 179 題 最大數
leetcode 179 題 題目 最大數 題目描述 給定一組非負整數,重新排列它們的順序使之組成乙個最大的整數。示例 1 輸入 10,2 輸出 210 示例 2 輸入 3,30,34,5,9 輸出 9534330 說明 輸出結果可能非常大,所以你需要返回乙個字串而不是整數。解決思路 arrays....
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說明 輸出結果可能非常大,所以你需要返回乙個字串而不是整數。本題的思路是首先將整數陣列轉化為字串陣列,然後使用comparator介面,...