• LeetCode() Largest Number


      全排列,超时,知道超时,只是想验证一下。

    class Solution {
    public:
        string largestNumber(vector<int>& nums) {
            sort(nums.begin(),nums.end());
            string res="";
            res=f(nums);
            while(next_permutation(nums.begin(),nums.end())){
                if(res<f(nums))
                    res=f(nums);
            }
            return res;
        }
        string f(vector<int>& coll){
            string res;
    	for(int i=0;i<coll.size();++i){
    		ostringstream sss;
    		sss<<coll[i];
    		res+=sss.str();
    	}
    	return res;
        }
    };
    

      en ,这个也不对

    class Solution {
    public:
        string largestNumber(vector<int>& nums) {
            vector<string> coll;
            for(int i=0;i<nums.size();++i){
                ostringstream sss;
    		    sss<<nums[i];
    		    coll.push_back(sss.str());
            }
            sort(coll.begin(),coll.end());
            string res="";
            for(int i=coll.size()-1;i>=0;--i)
                res+=coll[i];
            return res;
        }
        
    };
    

      事实证明,过了点不吃饭真的很危险,又低血糖了。

    class Solution {
    public:
        string largestNumber(vector<int>& nums) {
            vector<string> coll;
            for(int i=0;i<nums.size();++i){
                ostringstream sss;
    		    sss<<nums[i];
    		    coll.push_back(sss.str());
            }
            string res="";
            auto ite=coll.begin();
            sort(ite,ite+coll.size(),c);
            for(int i=coll.size()-1;i>=0;--i)
                res+=coll[i];
            if(res[0] == '0')
                return "0";
            return res;
        }
        static bool c(const string a,const string b)
        {
            string ab=a+b;
            string ba=b+a;
            return ab<ba;
        }
    };
    

      更精简的

    class Solution { public: string largestNumber(vector<int>& nums) { sort(nums.begin(), nums.end(), [](const int& lhs, const int & rhs){return to_string(lhs) + to_string(rhs) > to_string(rhs) + to_string(lhs);}); if (nums[0] == 0) return "0"; return accumulate(nums.begin(), nums.end(), string(""), [](const string& a, int b){ return a + to_string(b);}); } };

  • 相关阅读:
    LeetCode 79
    LeetCode 437
    LeetCode 783
    LeetCode 59
    LeetCode 每日一题 04/24
    LeetCode 5
    LeetCode 43
    简易多线程任务 往数据库插数据
    定时任务--查数据库--注解实现
    redis 简易 实现
  • 原文地址:https://www.cnblogs.com/yanqi110/p/5016917.html
Copyright © 2020-2023  润新知