179.最大数
难度中等
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1:
输入:nums = [10,2]
输出:“210”
示例 2:
输入:nums = [3,30,34,5,9]
输出:“9534330”
示例 3:
输入:nums = [1]
输出:“1”
示例 4:
输入:nums = [10]
输出:“10”
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 109
未解决
char b[10000000+5];
int cmp(const void* a, const void* b)
{
return strcmp(((char *)b),((char *)a));
}
char * largestNumber(int* nums, int numsSize){
char a[105][100000+5],c;
memset(b,0,sizeof(b));
int i,j,k,f;
for(i=0;i<numsSize;i++)
{
j=0;
while(nums[i])
{
a[i][j++]=nums[i]%10+'0';
nums[i]/=10;
}
//printf("$%s\n",a[i]);
a[i][j]='\0';
j=f=j-1;
for(k=0;k<=f/2;k++)
{
c=a[i][j];
a[i][j--]=a[i][k];
a[i][k]=c;
}
}
// for(i=0;i<numsSize;i++)
// {
// printf("#%s\n",a[i]);
// }
qsort(a,numsSize,sizeof(a[0]),cmp);
for(i=0;i<numsSize;i++)
{
strcat(b,a[i]);
printf("%s--%s\n",a[i],b);
}
return b;
}