- 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- 思路:
- 用dfs找出所有的数字拼接,通过字符串大小比较,找到最小的数字
- 启发或者坑
- 这个题目还是有坑我没有找到,因为毕竟这个代码到了leetcode上超时了
- 待我年前找时间,A了leetcode这道题【https://leetcode-cn.com/problems/largest-number/】
- 代码
class Solution { public: string minres; string PrintMinNumber(vector<int> numbers) { minres=""; dfs(numbers, ""); return minres; } void dfs(vector<int>& numbers, string res) { if (numbers.size() ==0) { if (res < minres || minres=="") minres = res; return; } int temp; string oristr = res; for (int i = 0; i < numbers.size(); i++) { res = oristr + to_string(numbers[i]); temp = numbers[i]; numbers.erase(numbers.begin()+i); dfs(numbers, res); numbers.insert(numbers.begin()+i,temp); } } };
剑指offer 34.把数组排成最小的数
最新推荐文章于 2022-06-07 00:19:46 发布