【牛客刷题专栏】0x32:JZ45 把数组排成最小的数(C语言编程题)

news2025/1/19 23:26:24

前言

  • 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失
  • 个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer:
    在这里插入图片描述

目录

  • 前言
  • 问题描述:
  • 解法思路:
  • 代码结果:
  • 结束语


问题描述:

  • 输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

  • 例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。

  • 1.输出结果可能非常大,所以你需要返回一个字符串而不是整数

  • 2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0

  • 数据范围:

  • 0<=len(numbers)<=100


---
# 举例:
```c
//示例1:
//输入:
[11,3]
//返回值:
"113"
//=======================
//示例2:
//输入:
[]
//返回值:
""
//=======================
//示例3:
//输入:
[3,32,321]
//返回值:
"321323"

解法思路:

  • 对于两个数 3 和 32 先比较332 >323 所以这里 3>32。也就是在比较两个数字之前 先拼接 然后在比较拼接后的大小

代码结果:

 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param numbers int整型一维数组 
 * @param numbersLen int numbers数组长度
 * @return string字符串
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */

//这里写一个两个数字拼接成字符串函数
//num1=12 num2=787 返回12787
int intCat(int num1, int num2) {
    int temp = num2;
    while (temp > 0) {
        temp = temp / 10;
        num1 *= 10;
    }

    return num1 + num2;
}
//写一个整数拼接到字符串后面的函数
void strInt(char* str, int num) {
    int len = 0, temp = num;
    char* str1 = NULL;
    while (temp > 0) {
        temp = temp / 10;
        len++;
    }
    str1 = (char*)malloc(len);
    sprintf(str1, "%d", num);
    strcat(str, str1);
    free(str1);
}
//写一个希尔排序算法
void shell_sort(int* number, int len) {
    for (int gap = len >> 1; gap > 0; gap = gap >> 1) {
        for (int j = gap; j < len; j++) {
            for (int i = j - gap; i >=0; i -= gap) {
                //如果小于 需要交换
                if (intCat(number[i + gap], number[i]) < intCat(number[i], number[i + gap]))
                {
                    int temp = number[i + gap];
                    number[i + gap] = number[i];
                    number[i] = temp;
                }
            }
        }
    }
}
char* PrintMinNumber(int* numbers, int numbersLen) {
    char ans_str[10000] = "";
    shell_sort(numbers, numbersLen);
    for (int i = 0; i < numbersLen; i++)
        strInt(ans_str, numbers[i]);
    return ans_str;
}



结束语

  • 以上就是该C语言编程题的内容。可以在牛客尝试刷几道题目来练习实践。牛客网刷题(点击可以跳转),可以尝试注册使用。
  • 题目来自:牛客/题库 / 在线编程 / 剑指offer:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法】LFU及其优化

文章目录 什么是LFU&#xff1f;设计思路代码实现&#xff08;基础版本&#xff09;参考论文代码实现&#xff08;优化版本&#xff09;区别 什么是LFU&#xff1f; LRU及其实现 上文讲解了LRU&#xff0c;他是一个基于最近是否被访问来做缓存淘汰的策略。 那么今天介绍一个新…

Postman的简单使用:

1. Postman 1.1 背景 当前主流的开发模式为&#xff1a;前后端分离开发。 前端人员开发前端工程&#xff0c;后端人员开发后端工程&#xff0c;只需要依据这份接口文档即可。在后端开发过程中每开发完一个功能&#xff0c;就需要对这个功能接口进行测试&#xff0c;由于现在是…

图灵完备游戏:信号计数 解法记录

使用1个全加器 2个半加器完成。这关的思想主旨在于如何把输出4&#xff0c;输出2&#xff0c;输出1的情况统一在一根导线上。 首先用一个全加器来完成输入2-4这三个引脚的计数&#xff0c;因为全加器输出范围二进制是00 - 11&#xff0c;而输入正好有两个引脚数位是2和1&…

linux周六串讲

esc. //粘贴复制上一条命令的参数 cat /etc/resolv.conf //查看DNS地址 route -n //查看网关 hostname //临时修改主机名 hostnamectl set-hostname 名称 //永久修改主机名 ssh root192.168.10.233 //用windows远程的格式&#xff0c;在CMD窗口输入这个命令 …

MYSQL数据库测评及整改

1、查询数据库版本&#xff1a;select version(); 2、查询已安装的插件&#xff1a;show plugins; 3、查询插件安装的位置&#xff1a; show variables like "%plugin_dir%"; 4、查询用户&#xff1a;选择数据库&#xff1a; select host,user,plugin from user; 5、…

Read View 数据快照,在MVCC里是如何工作的?

Read View 数据快照&#xff0c;在MVCC里是如何工作的&#xff1f; Read View 有四个重要的字段&#xff1a; ● m_ids &#xff1a;指的是在创建 Read View 时&#xff0c;当前数据库中「活跃事务」的事务 id 列表&#xff0c;注意是一个列表&#xff0c;“活跃事务”指的就…

Seata术语

1.什么是Seata Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 官网 2.Seata能干嘛 一个典型的分布式事务过程 分布式事务处理过程的一ID三组件模型&#xff1a; Transaction ID XID 全局唯一的事务ID三组…

WSL2编译安卓8.1源码,直接运行模拟器

目录 WSL2编译安卓8.1源码&#xff0c;直接运行模拟器WSL2下载安装移动到非系统盘下载和编译Android8直接运行emulator修改模拟器配置源码导入Android Studio并进行调试断点调试总结 WSL2编译安卓8.1源码&#xff0c;直接运行模拟器 学习Android Framework开发&#xff0c;需要…

零基础CTF入门指南+工具

ctf入门指南 CTF工具包获取地址&#xff1a;http://www.ctftools.com/ 如何入门&#xff1f;如何组队&#xff1f; capture the flag 夺旗比赛 类型&#xff1a; Web 密码学 pwn 程序的逻辑分析&#xff0c;漏洞利用windows、linux、小型机等 misc 杂项&#xff0c;隐写&…

2023年电工杯选题人数发布

该选题人数&#xff0c;主要基于根据各个平台开赛后24小时各项数据统计&#xff0c;进行评估&#xff08;方法见注释&#xff09;&#xff0c;最终得出2023年认证杯二阶段选题人数&#xff0c;大致为 题号选题人数A97B431 注释&#xff1a;选题人数来源&#xff1a;源自各个平台…

Python案例:获取music榜单数据,保存自己的music库

目录 前言本次知识点:开发环境:代码展示括展小知识尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 本次知识点: 爬虫基本流程 requests的使用 正则表达式的使用 开发环境: 解释器: python 3.8 编辑器: pycharm 2022.3 专业版 第三方模块使用 r…

如何自学网络安全 才不会成为脚本小子?

前言&#xff1a;我们来看看怎么学才不会成为脚本小子 目录&#xff1a; 一&#xff0c;怎么入门&#xff1f; 1、Web 安全相关概念&#xff08;2 周&#xff09; 了解网络安全相关法律法规 熟悉基本概念&#xff08;SQL 注入、上传、XSS、CSRF、一句话木马等&#xff09;。…

基于three.js实现的点击盒子消除游戏

一.项目背景 大学时期参加了机器人协会&#xff0c;并有幸成为了视觉组组长&#xff0c;所以在新一届社团招新上做了一款趣味小游戏来吸引新生的眼球&#xff0c;让大家知道协会的视觉组。 二.代码展示 <!DOCTYPE html> <html> <head> <style> body…

chatgpt赋能python:Python文件名字替换-优化SEO的必备技巧

Python文件名字替换-优化SEO的必备技巧 作为一名有10年Python编程经验的工程师&#xff0c;我深知文件名字替换在优化搜索引擎排名中占有重要的地位。本文将介绍如何使用Python进行文件名字替换以优化SEO&#xff0c;旨在为广大编程初学者提供有益的参考和指导。 什么是文件名…

零基础如何学习 Web 安全?

Web安全不仅是互联网的核心&#xff0c;而且还是云计算和移动互联网的最佳载体。对于信息安全从业者而言&#xff0c;Web安全是一个非常重要的研究课题之一。 Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用&#xff0c;社交网络、聊天工具…

小学妹刚毕业没地方住想来借宿?于是我连夜用Python给她找了个好房子,我真是太机智了

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 事情是这样的&#xff0c;小学妹刚毕业参加工作&#xff0c;人生地不熟的&#xff0c; 因为就在我附近上班&#xff0c;所以想找我借宿。。。 想什么呢&#xff0c;都不给住宿费&#xff0c;想免费住&#xff1f; 于是我用…

MySQL运维篇(二)

四.MyCat 4.1 MyCat概述 4.1.1 介绍 Mycat是开源的、活跃的、基于Java语言编写的数据库中间件。可以像使用mysql一样来使用 mycat&#xff0c;对于开发人员来说根本感觉不到mycat的存在。mycat不单只可以做MySQL的代理&#xff0c;其它常用的数据库也可以。 开发人员只需要…

基于springboot+Vue+ Element-Plus+mysql实现学生宿舍管理系统

基于springbootVue Element-Plusmysql实现学生宿舍管理系统 一、系统介绍二、功能展示1.登陆2、主页--学生3、主页--宿舍管理员4.学生管理--管理员5.宿管信息--管理员6.宿舍管理--管理员7.信息管理--管理员8.申请管理--管理员9.访客管理--管理员10.水电费管理--管理员11.卫生管…

AB Test数学原理及金融风控应用

1 什么是AB Test AB测试是一种常用的实验设计方法&#xff0c;用于比较两个或多个不同处理或策略的效果&#xff0c;以确定哪个处理或策略在某个指标上表现更好。在AB测试中&#xff0c;将随机选择一部分用户或样本&#xff0c;将其分为两个或多个组&#xff0c;每个组应用不同…

【Maven】单元测试、统计、覆盖率相关插件使用介绍

maven-surefire-plugin maven-surefire-plugin是maven执行单元测试的插件&#xff0c;不显性配置也可以直接使用。这个插件的surefire:test命令会默认绑定maven执行的test阶段。执行结束后&#xff0c;默认在target/surefire-reports目录下会生成txt和xml两种格式的结果&#…