例如: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个整数合并成最大和最小的数字相关推荐

  1. 760-给定n个整数,将这n个整数合并成最大和最小的数字

    题目如下 给定n个整数,将这n个整数合并成最大和最小的数字 例如:34,567,9,88.合并的最大数字为98856734,最小数字为34567889 解题思路 找到数列的最大数字,将所有的数字变成和 ...

  2. Python给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1

    给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1, 注意: 数组nums1和nums2初始化元素个数分别为m和n 假设num1有足够空间(长度超过m+n或与其相等 ...

  3. 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。

    问: /** 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...

  4. 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。

    问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输入格式 输入的第一行包含一个整数n,表示给定数字的个数. 第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所 ...

  5. c语言 找出一个大于给定整数且紧随这个整数的素数

    找出一个大于给定整数且紧随这个整数的素数 问题:1.忘了break 2.忘了第一个return 0,其后果就是咔------根本停不下来(语言难以描述) 3.for+if的穷举法(?)用来判断是不是素 ...

  6. 题目:给定一个整数数组 nums 和一个整数目标值 targ数,并返回它们的数组下标。

    题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 答案: public class JavaTest {pub ...

  7. 给定一个整数数组 nums 和一个整数目标值 target, 请你在该数组中找出和为目标值 target 的那两个整数, 并返回它们的数组下标

    题目要求: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标. [注]从前往后进行匹配, 一旦匹配成功, 便结 ...

  8. 两数之和, 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。

    两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那两个整数,并返回它们的数组下标. 可以假设每种输入只会对应一个答案.但是,数组 ...

  9. 编写程序:找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。

    编写程序:找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回. 下面展示一些 内联代码片. #include<stdio.h> int main() {int f(int s);i ...

最新文章

  1. Disruptor之概览
  2. python精要(81)-collections容器类型(1)-统计相同的值
  3. boost::iostreams::detail::path用法的测试程序
  4. MyEclipse 2014中 Window--customize perspective 功能 打不开的解决办法
  5. Git常用命令——远程操作
  6. php的核心类 控制,phpMVC框架的核心启动类定义
  7. HTML示例07---图像与超链接
  8. IO口模拟SPI总线问题
  9. 计算机学报范文,计算机学报论文
  10. 参考文献在论文中进行引用标注
  11. 腾讯下载的视频怎么转换成mp4格式
  12. 概率空间probability space 伯努利实验 n次伯努利实验
  13. 【深度学习计算机视觉实战】给深度学习计算机视觉初学者的学习和求职建议,这个行业还缺人
  14. 计算机毕业设计android的消防安全知识宣传app(源码+系统+mysql数据库+Lw文档)
  15. Vue前端开发文档(完善中)
  16. 02. 只允许使用QQ和微信 - 服务 ❀ 飞塔 (Fortinet6.0) 防火墙
  17. 立交匝道中边桩坐标放样正反算程序RAMP
  18. 【大数据处理】广州餐饮店铺爬虫并可视化,上传至hdfs
  19. getchar()用法 与 getch()函数使用方法
  20. 外网电脑配置8G运行内存,运行Android Studio,速度很轻松

热门文章

  1. 卸载 android 系统app
  2. 如何用 GPU硬件层加速优化Android系统的游戏流畅度—应用性能管理
  3. h5语音自动播报,能够兼容ios,安卓微信支付宝
  4. 禁用浏览器的兼容模式
  5. starUML之时序图
  6. 【idea】Command line is too long. Shorten command line for XXXApplication
  7. IDEA启动单元测试报错,Shorten command line for xxx;Shorten command line不显示
  8. Python 操作 Excel,从 xlwings 模块开始
  9. nn_dynamics 学习笔记二
  10. 博客搬家:hntea.xyz