把数组中的数拼接起来,求最大值(最小值)

博客探讨了如何在数组中找到能拼接成最大值的组合。通过比较位数和数值,选择每次最合适的值,逐步构建最大结果。提供了一个PHP实现的代码示例,并进行了测试。
摘要由CSDN通过智能技术生成

问题分析

  • 最暴力的解法就是把所有的组合都找出来, 然后排序得到最大值(或者最小值),这样还搞什么算法,直接抛弃.
  • 这个问题的思路为: 在一个数组中依次选出最合适的值放在结果中. 那么问题就变成了如何选出最合适的值, 下面以求最大值为例说明:
    1. 对于两个数比较, 首先要考虑的就是位数的差异, 比如 9和 10 从值的大小比较, 那应该是10胜出, 但是 109 肯定没有 910大. 所以比较的时候要把位数作为判断的依据.
    2. 考虑了位数之后, 我们就来比较数字的大小:位数相同的, 数值大 的作为最合适的值 , 例如 9和8比较, 9胜出;
    3. 位数不同的, 以位数少的为基准, 从左到右逐位 比较. 位值大的胜出, 例如: 9和88比较, 9胜出; 位值相同的, 位数少的胜出,例如: 99和990比较, 99胜出.
    4. 这样下来每次选择的都是 最合适的值 ,依次组合的结果也就是我们想要的最大值.

下面是代码 php

function get_max($arr)
{
   
    $res = 
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值