You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选第二数组中无法由第一数组元素求和得到的值

问题分析与解决方案

嘿,这个问题其实可以先从数组元素的规律入手,很快就能找到答案!

首先看第一个数组,所有元素都是100000——这意味着不管你怎么选元素相加,得到的结果必然是100000的正整数倍,而且最多能凑出 9 * 100000 = 900000(毕竟数组里只有9个元素)。

接下来我们逐个检查第二数组里的数值:

  • 500000:算一下,500000 ÷ 100000 = 5,刚好是5个100000相加的结果,第一个数组够5个元素,所以这个值是可以凑出来的。
  • 250000:250000 ÷ 100000 = 2.5,不是整数——我们总不能把第一个数组里的元素拆成半个来加吧?所以这个值肯定凑不出来。
  • 150000:同样的道理,150000 ÷ 100000 = 1.5,不是整数,自然也无法通过第一个数组的元素求和得到。

代码验证示例(PHP)

如果需要用代码自动筛选出这些无法得到的值,可以参考下面的实现:

<?php
$array1 = [100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000];
$array2 = [500000, 250000, 150000];

// 因为array1所有元素相同,取第一个作为基数
$baseValue = $array1[0];
$maxPossibleSum = count($array1) * $baseValue;
$unreachableValues = [];

foreach ($array2 as $target) {
    // 判断条件:要么不是基数的整数倍,要么需要的元素个数超过array1的长度
    if ($target % $baseValue !== 0 || ($target / $baseValue) > count($array1)) {
        $unreachableValues[] = $target;
    }
}

print_r($unreachableValues);
// 输出结果:Array ( [0] => 250000 [1] => 150000 )
?>

这个思路的好处是不用写复杂的求和组合逻辑,利用第一个数组元素的一致性直接简化判断,效率很高。

内容的提问来源于stack exchange,提问作者copetganteng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:56:35