[PHP] 算法-把数组排成最小的数的PHP实现
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解法1 1.数组排序,使用自定义排序规则是 a.b>b.a a 和 b互换位置 2.usort函数的使用function costomcomp(a,b)return a.b > b.a usort(arr,'costomcomp') return implode('',arr)解法2:冒泡法 1.循环外层 i 2.内层循环 j,判断条件是j=i+1;j<arr.length;j++ 3.内层调换 arr[i].arr[j] > arr[j].arr[i] 调换位置
<?php function customComp($a,$b){return intval($a.''.$b) > intval($b.''.$a); } //解法1:自定义排序 function PrintMinNumber($numbers) {usort($numbers,'customComp');return intval(implode('',$numbers)); } $arr=array(3,32,321); $result=PrintMinNumber($arr); var_dump($result);$result=PrintMinNumber2($arr); var_dump($result);//解法2:冒泡排序 function PrintMinNumber2($arr) {$length=count($arr);for($i=0;$i<$length;$i++){for($j=$i+1;$j<$length;$j++){if(intval($arr[$i].''.$arr[$j])>intval($arr[$j].''.$arr[$i])){$temp=$arr[$i];$arr[$i]=$arr[$j];$arr[$j]=$temp;} } } return intval(implode('',$arr)); }
转载于:https://www.cnblogs.com/taoshihan/p/9671792.html
[PHP] 算法-把数组排成最小的数的PHP实现相关推荐
- 数据结构与算法--将数组排成最小的数
将数组排成最小的数 题目:输入一个正整数的数组,将数组中所有数字拼接在一起排列成一个新的数,打印能拼接出来的所有数字中最小的一个, 案例:输入数组{12,4,55},则能打印出最小的数组是:12455 ...
- 算法:把数组排成最小的数
* @Description 把数组排成最小的数* @问题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.* 例如输入数组{3,32,321},则打印出这 ...
- printf打印数组_(45)C++面试之把数组排成最小的数
// 面试题45:把数组排成最小的数 // 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼 // 接出的所有数字中最小的一个.例如输入数组{3, 32, 321},则打印出这3 ...
- 【剑指offer-Java版】33把数组排成最小的数
把数组排成最小的数 难点在于比较规则的确定以及比较规则的正确性证明 比如:仅仅是局部的两个数字的顺序较小,如何保证整个数组按此规则进行排序后达到全局的较小 书中关于这一点的证明直接用的反证法,忘的差不 ...
- 33:把数组排成最小的数
/*** 面试题33:把数组排成最小的数* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.* 例如输入数组{3,32,321},则打印出这三个数字能排成的 ...
- 《剑指offer》-- 把数组排成最小的数、丑数、二进制中1的个数、表示数值的字符串、替换空格
一.把数组排成最小的数: 1.题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为 ...
- 【LeetCode】剑指 Offer 45. 把数组排成最小的数
[LeetCode]剑指 Offer 45. 把数组排成最小的数 文章目录 [LeetCode]剑指 Offer 45. 把数组排成最小的数 package offer;import java.uti ...
- 列表转化成数组_30. 把数组排成最小的数
把数组排成最小的数 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为3213 ...
- 面试题45. 把数组排成最小的数
题目: 面试题45. 把数组排成最小的数 题解: 1. 题解一: 2. 题解二: * 解题思路:* 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来.关 ...
最新文章
- python控制结构实训_《python 从入门到精通》§5 控制结构
- loj.ac:#10024. 「一本通 1.3 练习 3」质数方阵
- 【转】Android OTA 升级之一:编译升级包
- hdu 4046 Panda 线段树
- Python(7):__init__.py
- js回调函数的理解(轉)
- Ant Build.xml
- JAVA11 - ZGC 特性
- WPF 可触摸移动的ScrollViewer控件
- 扩展可以支持枚举类型的DorpDownList控件
- 5.Knockout.Js(自定义绑定)
- UVA10344 23 out of 5【暴力+DFS】
- 一个极简的RePlugin
- 够快云库轻松解决文件复制速度过慢
- 【性能优化实战】4次版本迭代,我们将项目性能提升了360倍!
- GitHub怎么搜索项目
- 互联网30年,泡沫如梦,一个个泡沫和风口过后,会是什么样的结局
- 剑指Offer-22反转链表
- EL表达式处理字符串
- linux 移除、加载SATA盘