给定n个整数,将这n个整数合并成最大和最小的数字
例如:34,567,9,88。合并的最大数字为98856734,最小数字为34567889
算法思路:找到数列的最大数字,将所有的数字变成和最大数字相同位数的数,数字改变规则为右边补自身的个位数字。
在示例中的数据变成344,567,999,888。然后从大到小排序,即 999,888,567,344,再替换成原数据则为9,88,567,34,那么从头到尾合并即为最大数,从尾到头合并即为最小数。
C程序实现如下:
typedef struct Pair
{
int num;//原数据
int newnum;//新构造的数据
}Pair;
//统计十进制n的位数
int GetFigure(int n)
{
int count = 0;
do
{
count++;
n /= 10;
}while(n != 0);
return count;
}
//把数字n构造成一个figure位的新数字,构造方法为:复制数字n的个位,直到总位数到figure
//例如(123,5)->12333;(89,4)->8999
int GetNum(int n,int figure)
{
int count = GetFigure(n);
const int a = n%10;//a的个位数字
while(count < figure)
{
n = n * 10 + a;
count++;
}
return n;
}
void Sort(Pair *pbrr,int len) //冒泡,从大到小有序
{
Pair tmp;
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1-i;j++)
{
if(pbrr[j].newnum < pbrr[j+1].newnum)
{
tmp = pbrr[j];
pbrr[j] = pbrr[j+1];
pbrr[j+1] = tmp;
}
}
}
}
//根据数组arr组合成一个最大的数字和一个最小的数字
//不能处理溢出的问题,如果需要处理溢出则需要将数据转成字符串在连接
void MaxAndMin(int *arr,int len)
{
int tmp = arr[0];
int i;
for(i=1;i<len;i++)
{
if(tmp < arr[i])
{
tmp = arr[i];
}
}
int fig = GetFigure(tmp);//获取最大值的位数,然后将其它值全部补齐,补成位数相同的数字好进行排序
Pair * pbrr = (Pair *)malloc(len*sizeof(Pair));
for(i=0;i<len;i++) //将arr的 数据全部拷贝到pbrr中,然后进行排序
{
pbrr[i].num = arr[i];
}
for(i=0;i<len;i++)
{
pbrr[i].newnum = GetNum(pbrr[i].num,fig);//保存补齐的数字
}
Sort(pbrr,len); //从大到小排序
long long max = 0;
long long min = 0;
for(i=0;i<len;i++)//将数组的所有数字组合成一个数字,如{6,54,321}->654321
{
fig = GetFigure(pbrr[i].num);
max = max*pow(10.0,fig) + pbrr[i].num;
}
for(i=len-1;i>=0;i--)//从后往前遍历,得到最小的数字
{
fig = GetFigure(pbrr[i].num);
min = min*pow(10.0,fig) + pbrr[i].num;
}
printf("最大值是:%lld\n",max);
printf("最小值是:%lld\n",min);
free(pbrr);
}
int main()
{
int arr [] = {9,87,98,12,134};
MaxAndMin(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}
给定n个整数,将这n个整数合并成最大和最小的数字相关推荐
- 760-给定n个整数,将这n个整数合并成最大和最小的数字
题目如下 给定n个整数,将这n个整数合并成最大和最小的数字 例如:34,567,9,88.合并的最大数字为98856734,最小数字为34567889 解题思路 找到数列的最大数字,将所有的数字变成和 ...
- Python给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1
给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1, 注意: 数组nums1和nums2初始化元素个数分别为m和n 假设num1有足够空间(长度超过m+n或与其相等 ...
- 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
问: /** 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...
- 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输入格式 输入的第一行包含一个整数n,表示给定数字的个数. 第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所 ...
- c语言 找出一个大于给定整数且紧随这个整数的素数
找出一个大于给定整数且紧随这个整数的素数 问题:1.忘了break 2.忘了第一个return 0,其后果就是咔------根本停不下来(语言难以描述) 3.for+if的穷举法(?)用来判断是不是素 ...
- 题目:给定一个整数数组 nums 和一个整数目标值 targ数,并返回它们的数组下标。
题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 答案: public class JavaTest {pub ...
- 给定一个整数数组 nums 和一个整数目标值 target, 请你在该数组中找出和为目标值 target 的那两个整数, 并返回它们的数组下标
题目要求: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标. [注]从前往后进行匹配, 一旦匹配成功, 便结 ...
- 两数之和, 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 可以假设每种输入只会对应一个答案.但是,数组 ...
- 编写程序:找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。
编写程序:找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回. 下面展示一些 内联代码片. #include<stdio.h> int main() {int f(int s);i ...
最新文章
- Disruptor之概览
- python精要(81)-collections容器类型(1)-统计相同的值
- boost::iostreams::detail::path用法的测试程序
- MyEclipse 2014中 Window--customize perspective 功能 打不开的解决办法
- Git常用命令——远程操作
- php的核心类 控制,phpMVC框架的核心启动类定义
- HTML示例07---图像与超链接
- IO口模拟SPI总线问题
- 计算机学报范文,计算机学报论文
- 参考文献在论文中进行引用标注
- 腾讯下载的视频怎么转换成mp4格式
- 概率空间probability space 伯努利实验 n次伯努利实验
- 【深度学习计算机视觉实战】给深度学习计算机视觉初学者的学习和求职建议,这个行业还缺人
- 计算机毕业设计android的消防安全知识宣传app(源码+系统+mysql数据库+Lw文档)
- Vue前端开发文档(完善中)
- 02. 只允许使用QQ和微信 - 服务 ❀ 飞塔 (Fortinet6.0) 防火墙
- 立交匝道中边桩坐标放样正反算程序RAMP
- 【大数据处理】广州餐饮店铺爬虫并可视化,上传至hdfs
- getchar()用法 与 getch()函数使用方法
- 外网电脑配置8G运行内存,运行Android Studio,速度很轻松
热门文章
- 卸载 android 系统app
- 如何用 GPU硬件层加速优化Android系统的游戏流畅度—应用性能管理
- h5语音自动播报,能够兼容ios,安卓微信支付宝
- 禁用浏览器的兼容模式
- starUML之时序图
- 【idea】Command line is too long. Shorten command line for XXXApplication
- IDEA启动单元测试报错,Shorten command line for xxx;Shorten command line不显示
- Python 操作 Excel,从 xlwings 模块开始
- nn_dynamics 学习笔记二
- 博客搬家:hntea.xyz