NC111. 最大数
描述
示例1
输入:
[30,1]
输出:
"301"
示例2
输入:
[2,20,23,4,8]
输出:
"8423220"
示例3
输入:
[2]
输出:
"2"
示例4
输入:
[10]
输出:
"10"
C++ 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2021-09-15
bool cmp(const string& a, const string& b) { return a + b > b + a; } class Solution { public: /** * 最大数 * @param nums int整型vector * @return string字符串 */ string solve(vector<int>& nums) { // write code here if (nums.size() == 0) return ""; vector<string> strNums; for (auto num : nums) { strNums.emplace_back(to_string(num)); } sort(strNums.begin(), strNums.end(), cmp); if (strNums[0] == "0") return "0"; string res; for (auto str : strNums) { res += str; } return res; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 396KB, 提交时间: 2021-09-14
class Solution { public: /** * 最大数 * @param nums int整型vector * @return string字符串 */ string solve(vector<int>& nums) { // write code here vector<std::string> nums_str; for (int i = 0; i < nums.size(); i++) { nums_str.push_back(std::to_string(nums[i])); } sort(nums_str.begin(), nums_str.end(), cmp); std::string res; if (nums_str[0] != "0"){ res = nums_str[0]; } else{ return "0"; } for (int i = 1; i < nums_str.size(); i++) { // if (nums_str[i] == "0" && nums_str[i-1] == "0") // { // continue; // } res += nums_str[i]; } if (res.empty()) { return "0"; } return res; // 全排列 } static bool cmp(std::string s1, std::string s2) { std::string s12 = s1 + s2; std::string s21 = s2 + s1; return s12 > s21; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 396KB, 提交时间: 2021-08-29
class Solution { public: /** * 最大数 * @param nums int整型vector * @return string字符串 */ static bool cmp(string a,string b){ return a+b > b+a; } string solve(vector<int>& nums) { // write code here vector<string> ans; for(int i= 0;i<nums.size();i++) { ans.push_back(to_string(nums[i])); } sort(ans.begin(), ans.end(),cmp); if(ans[0] == "0") return "0"; string str; for(int i= 0;i<ans.size();i++) { str = str+ans[i]; } return str; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 400KB, 提交时间: 2021-09-08
class Solution { public: /** * 最大数 * @param nums int整型vector * @return string字符串 */ static bool cmp(string &a, string &b) { return a + b > b + a; } string solve(vector<int>& nums) { if (nums.size() == 0) return ""; if (nums.size() == 1) return to_string(nums[0]); string result; vector<string> ve; for(int i = 0; i < nums.size(); i++) { ve.push_back(to_string(nums[i])); } if (nums[0] == 0) return "0"; sort(ve.begin(), ve.end(), cmp); for(int i = 0; i < nums.size(); i++) { result += ve[i]; } return result; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 404KB, 提交时间: 2021-09-12
class Solution { public: /** * 最大数 * @param nums int整型vector * @return string字符串 */ static bool cmp(string a,string b){ return a+b>b+a; } string solve(vector<int>& nums) { // write code here vector<string> ve; for(int i=0;i<nums.size();i++) ve.push_back(to_string(nums[i])); sort(ve.begin(),ve.end(),cmp); if(ve[0]=="0") return "0"; string res=""; for(int i=0;i<ve.size();i++) res+=ve[i]; return res; } };