LeetCode 179. 最大數(Largest Number)


題目描述

 

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

示例 1:

輸入: [10,2]
輸出: 210

示例 2:

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

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

 

解題思路

 

組成最大數應使得高位數字盡量大,所以首先按照高位數字從大到小對數組排序,然后一次從高位到低位組成最大數。注意若數組全為0,則直接返回一個0.

 

代碼

 

 1 class Solution {
 2 public:
 3     string largestNumber(vector<int>& nums) {
 4         vector<string> numStr;
 5         for(int num: nums)
 6             numStr.push_back(to_string(num));
 7         sort(numStr.begin(), numStr.end(), cmp);
 8         if(numStr.size() && numStr[0] == "0") return "0";
 9         string s = "";
10         for(string num: numStr)
11             s += num;
12         return s;
13     }
14     static bool cmp(string i, string j){
15         return i + j > j + i;
16     }
17 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM