题解 | 把数组排成最小的数

把数组排成最小的数

https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993

#include <vector>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param numbers int整型vector
     * @return string字符串
     */
    string PrintMinNumber(vector<int>& numbers) {
        // write code here
        vector<string> ans;
        for (int i = 0; i < numbers.size(); ++i) {
            ans.push_back(to_string(numbers[i]));//都在string头文件
        }
        auto cmp = [](const string & s1, const string & s2) {
            return s1 + s2 < s2 + s1;
        };//局部函数隐含this指针,如果不想声明成静态用lambda
        sort(ans.begin(), ans.end(), cmp);
        string res;
        for (int i = 0; i < ans.size(); ++i) {
            //res += ans[i];//每次'+'可能触发拷贝和重新分配
		  	res.append(ans[i]);
        }
        return res;
    }
};

主要就是排序问题,要想清楚什么情况下这个比较是单调的(就是a<b,b<c时,有a<c)。

全部评论

相关推荐

zhiyog:666,你看郑州有几个互联网公司?,农业大省zf哪来资金投入互联网。。。(河南人吐槽)****海投大城市,面试会有的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务