LeetCode-剑指面试45-把数组排成最小的数-创新互联

在这里插入图片描述

创新互联主要从事成都做网站、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务沁阳,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:135182197921、内置函数

我们可以使用C++的内置函数,先将所有数组转换成字符串进行排序后再进行输出。在此我们进行排序的逻辑是:若s1 + s2 构成的字符串的值小于 s2 + s1 构成的字符串的值,则将s1排在s2前面。我们将数组排序后统计加入字符串中即可。

class Solution {public:
    static bool cmp(string s1, string s2) {return s1 + s2< s2 + s1;
    }

    string minNumber(vector&nums) {vectornum;
        string res;
        for (int i: nums) {num.emplace_back(to_string(i));
        }
        sort(num.begin(), num.end(), cmp);
        for (string s: num) {res += s;
        }
        return res;
    }
};
2、快排

除了使用内置函数之外,我们还可以自己实现快排。

class Solution {public:
    string minNumber(vector& nums) {vectorstrs;
        for(int i = 0; i< nums.size(); i++)
            strs.push_back(to_string(nums[i]));
        quickSort(strs, 0, strs.size() - 1);
        string res;
        for(string s : strs)
            res.append(s);
        return res;
    }
private:
    void quickSort(vector& strs, int l, int r) {if(l >= r) return;
        int i = l, j = r;
        while(i< j) {while(strs[j] + strs[l] >= strs[l] + strs[j] && i< j) j--;
            while(strs[i] + strs[l]<= strs[l] + strs[i] && i< j) i++;
            swap(strs[i], strs[j]);
        }
        swap(strs[i], strs[l]);
        quickSort(strs, l, i - 1);
        quickSort(strs, i + 1, r);
    }
};

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:LeetCode-剑指面试45-把数组排成最小的数-创新互联
文章来源:http://ybzwz.com/article/poejc.html