[lintcode]184. 最大數
阿新 • • 發佈:2018-11-08
給出一組非負整數,重新排列他們的順序把他們組成一個最大的整數。
這裡用到了貪心演算法的思想,保證每次組成的數都是最大的,那麼最後的數一定是最大的。具體實現時首先將陣列轉為字串,使用sort()函式自定義比較規則即可。利用string的特性可以很方便的實現。
class Solution { public: /* * @param nums: A list of non negative integers * @return: A string */ string largestNumber(vector<int> &nums) { // write your code here vector<string> strnums(nums.size()); for(int i=0;i<nums.size();i++){ strnums[i]=to_string(nums[i]); } sort(strnums.begin(),strnums.end(),cmp); string res=""; for(int i=0;i<nums.size();i++){ res = res + strnums[i]; } if(res[0]=='0') return "0"; return res; } static bool cmp(string strnum1,string strnum2){ string str1 = strnum1 + strnum2; string str2 = strnum2 + strnum1; return str1 > str2; } };