【剑指Offer】输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路
思路(1):看到这个题目我第一思路就是将数组里面的数字进行一个全排列,然后再对全排列的所有数字进行比较取最小的;但是该方法费时,费空间。代码不值得用。
思路(2):
1-我们先把int型数组用to_string函数转换成字符串;
2-我们用sort 函数对整个vector 中的字符串进行一个排序,但是这个排序规则需要我们自己设定。
规则:比如数字A和B,会排列成AB和BA 两个数字,若AB<BA ,则我们认为A<B。看具体代码。
3-将排列好的字符串合并成一个字符串输出。
思路(2)代码
class Solution {public:bool comp(const string & s1, const string & s2) {string res1, res2;res1 = s1 + s2;res2 = s2 + s1;return res1 < res2;}string PrintMinNumber(vector<int> numbers) {int len = numbers.size();string result="";vector<string> s;for (int i = 0; i < len; i++) {string tmp;tmp = to_string(numbers[i]);s.push_back(tmp);}sort(s.begin(), s.end(), comp);for (int j = 0; j < len; j++) {result += s[j];}return result;}
};
【剑指Offer】输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。相关推荐
- 代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串
一.344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的 ...
- 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符
一.344.反转字符串 力扣 思路:很简单的一个for循环双指针,left和right交换. class Solution {public void reverseString(char[] s) { ...
- 《剑指offer》内容总结
(1)剑指Offer--Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...
- 剑指offer所有的题目的总结
目录 基本都是参考别的博客和书本的代码,仅作为自己笔记用!! 零.小结: 一.位运算 1.二进制中1的个数 2.判断二进制中0的个数 3.二进制高位连续0的个数 二.二叉树 1.二叉搜索树第k个结点 ...
- 剑指offer所有的题目总结
自己找工作过程中进行的整理总结. 参考别的博客和书本的代码进行的总结,作为自己笔记用!! 零.小结: 一.位运算 1.二进制中1的个数 2.判断二进制中0的个数 3.二进制高位连续0的个数 二.二叉树 ...
- 剑指offer做题记录
1. 剑指 Offer 03. 数组中重复的数字 力扣 class Solution { public:int findRepeatNumber(vector<int>& nu ...
- 剑指 offer 面试题精选图解 10-I.斐波那契数列
大家好,我是程序员吴师兄,欢迎来到图解剑指 Offer 专栏,在这个专栏里我将和大家一起学习如何用合理的思维来思考.解题.写代码. 今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 ...
- 剑指offer第2版Python题解(更新中)
O(n^2)排序 冒泡排序.插入排序与选择排序(Python)_NLP_victor的博客-CSDN博客 归并 归并排序(Python)_NLP_victor的博客-CSDN博客 快排 快速排序(Py ...
- 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java
<LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...
- 剑指offer系列-30.包含min函数的栈
剑指offer系列第30题.包含min函数的栈 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中, 调用 min.push 及 pop 的时间复杂度都是 ...
最新文章
- java面向对象编程知识点总结
- python upper()函数和lower()函数(返回字符串中字母的大[小]写)(大写、小写)
- 计算机科学在航空航天仿真模拟,2016年南京航空航天大学计算机科学与技术学院541计算机综合基础之数据结构复试笔试仿真模拟题...
- 机器视觉与深度神经网络—洗去浮华,一窥珠玑
- 迷宫求解无敌版(递归调用法)
- jQuery学习笔记(二)—— 操作DOM元素
- Powershell配置SharePoint环境
- 均分纸牌模型之mxj分礼物
- 如何开启MySQL的慢查询日志
- Matlab: 汉字转拼音函数包
- C++基础知识点(3)
- 【SEU程序设计课笔记】 Mooc - Chapter 6 - (EX) - 泰勒展开求sin(x)/计算PI的近似值
- C++实现超简单的文件加密
- 蓝牙BR/EDR和Bluetooth Smart的十大重要区别
- 四、Solr数据源配置(JNDI、DIH)及定时重做索引
- CSS之盒子的边距塌陷(兄弟、父子)与解决方案
- java英语面试自我介绍_java面试英语自我介绍范文
- 从0开始学web-day2
- 药用辅料数据查询网站系统-药品辅料数据
- island of java_专业英语试卷