题目链接:把数组排成最小的数 题意:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 题解:重载一下cmp函数。数字转成string。排序规律就是字符串组合起来,小的放前
一次遍历数组,将当前a【i】与其后面的每一个a【j】进行组合,即判断a【i】a【j】 与 a【j】a【i】哪一个更小 如果是a【j】a【i】更小的话,则交换a【j】与 a【i】的值。如此一来则能够找到每一个数的最合适的位置。 有点类似于冒泡排序的思想,将每一个能够组合起来得到最小值的a
解法1:在这里我们自己定义一个规则,对拼接后的字符串进行比较。排序规则如下: ·若ab > ba 则 a 大于 b, ·若ab < ba 则 a 小于 b, ·若ab = ba 则 a 等于 b; 根据上述规则,我们需要先将数字转换成字符串再进行比较,因为需要串起来进行比较。比较完之后,按顺序输出即可。 class Sol
layout: post title: 32-把数组排成最小的数 category: 剑指offer tags: description: 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 设num1
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 题目链接: https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993?tpId=13&
题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路: 一开始觉得暴力解开可以吧,但是觉得这是零分的做法就没有这样做。 先将整型数组转换
把数组排成最小的数 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 public class ArrangeArrayMin { public static void main(String[] args) { //
1 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 2 思路和方法 因为要拼接int数字,所以这里面涉及到int越界问题,所以题目返回string;主要是制定比
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路:定义排序规则。 两个数字m和n拼接成数字mn和nm,如果mn小于nm,应该打印mn,m放在n前面 1 class
问题: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路: 这是个大数问题,因为最后的数字可能会溢出,所以可以用字符串来排列结果。 对于任意两个数字a,b,可对其
牛客网 题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323 class Solution { public: string PrintMinNumber(vector<int> numbers) { vector
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 string PrintMinNumber(vector<int> numbers) { int len = numbers.size(); stri
剑指offer. 45 把数组排成最小的数(重要) 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解题思路: 实际上只要定义一种排序规则即可:两个数a,b 假如
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 # -*- coding: utf-8 -*- # @Time : 2019-07-10 19:57 # @Author : Jayce Wong # @ProjectN
思路1:求出这几个数的全排列,然后拼接起来存储为long类型,排序之后得到最小的数。 import java.util.ArrayList; import java.util.*; public class Solution { ArrayList<Long> list=new ArrayList<>(); public String PrintMinNumber(int [] numbers) { Strin
思路:对vector容器内的数据进行排序,按照将a和b转为string后,若a+b<b+a,a排在前的规则排序。 class Solution {public: string PrintMinNumber(vector<int> numbers) { int len=numbers.size(); if(len==0) return ""; //cmp为下方的静态成员函数
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 分析:对vector容器内的数据进行按照 将a和b转为string后 若 a+b<b+a a排在在前 的规则排序,如 2 21 因为 2
题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路分析: 要想将数组里所有的数拼起来排成一个数,还得是最小的,那么我们在拼接的过程中需要比较的
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 分析 贴出代码 import java.util.ArrayList; import java.util.Comparator; import java.util.Collection
题目链接 https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993?tpId=13&tqId=11185&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题意 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最