LeetCode 179 最大數(排序)

2021-10-01 10:59:35 字數 1005 閱讀 6146

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

示例 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介面,...