思路:同一组合而成的整数位数是固定的,就是让高位的数值最小化
可以将每个元素转为字符串后再将数组升序排序,然后implode拼接成整数字符串
Code:
<?php
$arr = [12,678,45,93,15];
/**
*正整数数组组合成最小的整数
*/
function array2Ints(Array $arr) :Int {
if(empty($arr)){
return 0;
}
if(count($arr) == 1){
return intval($arr[0]);
}
foreach($arr as $k => $v){
//拼接下划线是为了方便数组排序,纯数字的字符串排序还是按照数值大小排序
$arr[$k] = '_' . strval($v);
}
sort($arr);
return intval(str_replace('_', '', implode('',$arr)));
}
var_dump(array2Ints($arr));//Int(12154567893)
如有更好的思路请多指教
网友评论