要添加的最小单个正整数,以使两个数组相等

时间:2018-01-16 11:46:54

标签: php arrays

我有两个数组

arr1=[1,1,7,2] and arr2=[1,13,2,1]

输出应该像6 1

我需要找到最小的单个正整数元素,它可以添加到任何数组的任何一个元素中以使它们相等。只有当数组中的差异为1时才会出现这种情况。我正在使用条件

进行检查
sizeof(array_diff($arr1, $arr2)) == 1

我需要返回可以添加的最小的单个正整数元素以及应该添加的数组。

我是php新手,任何帮助都会很明显。提前谢谢。

3 个答案:

答案 0 :(得分:2)

据我了解你的问题,你希望输出是和的差值和数组的否:

$array1 = array(1,1,7,2);
$array2 = array(1,13,2,1);

$sum1 = array_sum($array1);
$sum2 = array_sum($array2);

$result = $sum1 - $sum2;
$difference = abs($sum1 - $sum2);

print_r($difference." ");

if($result<0)
  print_r("1");
else
  print_r("2");

答案 1 :(得分:0)

你的问题不是很明确,但这是我对你想要的猜测:

$arr1 = [1, 1, 7, 2];
$arr2 = [1, 13, 2, 1];

$arr1Sum = array_sum($arr1);
$arr2Sum = array_sum($arr2);

if ($arr1Sum == $arr2Sum) {
    echo "No difference";
} elseif ($arr1Sum < $arr2Sum) {
    echo "Add " . ($arr2Sum - $arr1Sum) . " to \$arr1";
} elseif ($arr1Sum > $arr2Sum) {
    echo "Add " . ($arr1Sum - $arr2Sum) . " to \$arr2";
}

eval.in demo

它只是比较两个数组的总和,如果$arr1小于$arr2,那么我们知道我们需要将差异添加到$arr1

如果我猜错了,请更新您的问题以澄清。

答案 2 :(得分:0)

您可以对数组进行排序并在foreach循环中对它们进行比较。

$arr1=[1,1,7,2];
$arr2=[1,13,2,1];

Sort($arr1);
Sort($arr2);

Foreach($arr1 as $key => $val){
    If($val>$arr2[$key]){
        Echo "arr1 key" . $key .": ".  ($val-$arr2[$key]). "\n";
    }Elseif($arr2[$key]>$val){
        Echo "arr2 key" . $key .": ".  ($arr2[$key]-$val). "\n";
    }Else{
        Echo "equal\n";
    }
}

不确定您是如何到达6 1我将其视为6

https://3v4l.org/OtmWF