当前位置:网站首页>179. 最大数
179. 最大数
2022-08-01 07:44:00 【Mr Gao】
179. 最大数
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1:
输入:nums = [10,2]
输出:“210”
示例 2:
输入:nums = [3,30,34,5,9]
输出:“9534330”
解题代码如下:
int f(int num1,int num2){
int a[18];
int b[18];
int sizea=0;
int sizeb=0;
int i;
while(num1){
a[sizea++]=num1%10;
num1=num1/10;
}
if(sizea==0){
sizea=1;
a[0]=0;
}
while(num2){
b[sizeb++]=num2%10;
num2=num2/10;
}
if(sizeb==0){
sizeb=1;
b[0]=0;
}
int sa=sizea,sb=sizeb;
for(i=0;i<sa;i++){
a[sa+sb-i-1]=a[sa-1-i];
// printf("%d ", a[sa+sb-i-1]);
}
for(i=0;i<sb;i++){
a[sb-i-1]=b[sb-1-i];
// printf("%d ", a[sb-i-1]);
}
for(i=0;i<sb;i++){
b[sa+sb-i-1]=b[sb-1-i];
// printf("%d ", b[sa+sb-i-1]);
}
for(i=0;i<sa;i++){
b[sa-i-1]=a[sb+sa-1-i];
}
sizea=sa+sb;
sizeb=sa+sb;
while(sizea!=0&&sizeb!=0){
if(a[sizea-1]>b[sizeb-1]){
return 1;
}
if(a[sizea-1]<b[sizeb-1]){
return -1;
}
sizea--;
sizeb--;
}
if(sizea==sizeb){
return 0;
}
if(sizea>sizeb){
return 1;
}else{
return -1;
}
}
void quick(int *a,int low,int high){
if(low<high){
int l=low,h=high,p=a[low];
while(low<high){
while(low<high&&(f(a[high],p)==-1||f(a[high],p)==0)){
high--;
}
a[low]=a[high];
while(low<high&&(f(a[low],p)==1||f(a[low],p)==0)){
low++;
}
a[high]=a[low];
}
a[low]=p;
quick(a,l,low-1);
quick(a,low+1,h);
}
}
int f2(int *a,int num){
int size=0;
while(num){
a[size++]=num%10;
num=num/10;
}
return size;
}
char * largestNumber(int* nums, int numsSize){
char *re=(char *)malloc(sizeof(char)*1000);
int size=0;
int *a=(int *)malloc(sizeof(int)*9);
quick(nums,0,numsSize-1);
int i;
for( i=0;i<numsSize;i++){
if(nums[i]!=0){
break;
}
// printf("%d ",nums[i]);
}
if(i==numsSize){
re[size++]='0';
re[size]='\0';
return re;
}
for(int i=0;i<numsSize;i++){
int sizearr=f2(a,nums[i]);
for(int j=sizearr;j>0;j--){
re[size++]=a[j-1]+'0';
}
if(sizearr==0){
re[size++]='0';
}
}
re[size]='\0';
return re;
}
边栏推荐
猜你喜欢
电磁兼容简明教程(6)测试项目
国内外最顶级的8大plm项目管理系统
企业数据虚拟化综合指南
日志导致线程Block的这些坑,你不得不防
升级为重量级锁,锁重入会导致锁释放?
MATLAB program design and application of MATLAB 2.5
VSCode 快捷键及通用插件推荐
Three aspects of Ali: How to solve the problem of MQ message loss, duplication and backlog?
"By sharing" northwestern university life service | | bytes a second interview on three sides by HR
华为深度学习课程第九章——卷积神经网络以及案例实践
随机推荐
USB 协议 (二) 术语
监听父元素宽高,自适应插件大小
pytest interface automation testing framework | parametrize source code analysis
gethostbyname \ getaddrinfo 解析域名IP地址不安全的原因
LeetCode240+312+394
22 Niu Ke Duo School 1 I. Chiitoitsu (Probability dp)
【杭电多校第四场 B题】最短路图+缩点dp
聊一聊ICMP协议以及ping的过程
The socket option
POJ2031空间站题解
C语言中编译时出现警告C4013(C语言不加函数原型产生的潜在错误)
图像基本操作的其他内容
my creative day
Pytest | skip module interface test automation framework
【Unity3D】相机
Golang: go open web service
选择排序—直接选择排序和堆排序
Golang: go get url and form attribute value
Data Analysis 5
HPC系统简介