当前位置:网站首页>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;
}
边栏推荐
- special day to remember
- pytest interface automation testing framework | pass in parameter values in the form of function return values
- 【MySQL】操作表DML相关语句
- 22 Niu Ke Duo School 1 I. Chiitoitsu (Probability dp)
- flink sql-client,怎么处理源端与目标增加端,sql-client包括映射表与JOB如
- Golang:go模版引擎的使用
- Golang:go获取url和表单属性值
- 数据分析5
- 巧妙利用unbuffer实时写入
- GO error handling
猜你喜欢
随机推荐
MATLAB program design and application of MATLAB 2.5
HPC系统简介
我说过无数遍了:从来没有一种技术是为灵活组合这个目标而设计的
POJ2421道路建设题解
22 Niu Ke Duo School 1 I. Chiitoitsu (Probability dp)
rhcsa 第四天
The use of Golang: go template engine
Create, modify and delete tables
JVM内存模型之深究模型特征
pytest接口自动化测试框架 | 执行失败跳转pdb
巧妙利用unbuffer实时写入
zip打包目录所有文件(含隐藏文件/夹)
Electromagnetic compatibility introductory tutorial (6) test project
Data Analysis 5
POJ1251丛林之路题解
LeetCode240+312+394
国内外最顶级的8大plm项目管理系统
Data Analysis 6
Go supports OOP: use struct instead of class
Vim扩展内容








