class Solution {
public String minNumber(int[] nums) {
String[] strs = new String[nums.length];
for(int i = 0;i=r) return;
int i=l,j=r;
String tmp = strs[i];
while(i=0&&i
func minNumber(nums []int) string {
str := toString(nums)
quickSort(str, 0, len(str)-1)
var res string
for _, char := range str {
res += char
}
return res
}
func quickSort(str []string, i, j int) {
if i < j {
pivot := partition(str, i, j)
quickSort(str, i, pivot-1)
quickSort(str, pivot+1, j)
}
}
func partition(str []string, i, j int) int {
pivot := str[i]
for i < j {
for i < j && str[j]+pivot >= pivot+str[j] {
j--
}
str[i] = str[j]
for i < j && str[i]+pivot <= pivot+str[i] {
i++
}
str[j] = str[i]
}
str[i] = pivot
return i
}
func toString(nums []int) []string {
res := make([]string, 0)
for _, num := range nums {
res = append(res, strconv.Itoa(num))
}
return res
}
共以下 15 个回答
c++ 代码& nums) str;
class Solution {
public:
string minNumber(vector
{
vector
string res;
for(int i=0;i<nums.size();i++)
str.push_back(to_string(nums[i]));
sort(str.begin(),str.end(),{return x+y<y+x;});
for(int i=0;i<str.size();i++)
res.append(str[i]);
return res;
}
};
时间:O(nlogn)
空间:O(n)
“`c++& nums) {
//冒泡
class Solution {
public:
string minNumber(vector
int i,j;
for(i = 0;i < nums.size() - 1;++i){ for(j = 0;j < nums.size() - 1 - i;++j){ if(to_string(nums[j]) + to_string(nums[j+1]) > to_string(nums[j+1]) + to_string(nums[j])){
swap(nums[j],nums[j+1]);
}
}
}
string res;
for(auto it:nums){
res += to_string(it);
}
return res;
}
};
最终就是一个排序的问题,这里用快排
还是排序问题,判断哪个数字排前面,哪个排后面,以前是通过比大小决定,这边是通过// to_string(x) + to_string(y) < to_string(y) + to_string(x),则x < y;决定
JS一行搞定
快排
7.31
Day22:下面是代码