有关于php的有好几种思路,很多博客都有我就不一一介绍了,只是贴代码仅供参考。
问题:给一个一维数组,不确定具体有多少元素,例如$arr = [1,2,3,4,3,2,1],让他们任意两数字相加的和等于一个给定的值,比如说 5 ,可能有好几个两个数相加都是5,但只是取最先开始两个相加的数等于5的,这两个数的索引。
先贴php代码,两种方式,一种两个for循环,另外一种一个循环
第一种:
function twoSum($arr, $sum)
{
$len = count($arr);
if ($len < 2) return false;
$tmp = [];
$repeat = [];
$flag = [];
for ($j = 0; $j < $len; $j++) {
$minus = $sum - $arr[$j];
unset($arr[$j]);
foreach($arr as $key => $two) {
if( $minus == $two ) {
echo '索引值为['.$j.','.$key.']';die;
}
}
}
}
$arr = [1, 1, 1, 3];
// $arr = [1,2,2,2,8,8,6,5,4,10];
twoSum(