来吧,老弟,先在你的脑海中构思一下你的思路,How to solve? 下面是个人给出的思路介绍,方法比较暴力,仅供参考
首先题目并没有说找出所有符合两个元素相加等于$target的要求,这对于我们这个题来说难度降低了很多(能力强的同学也可以试一试,就是将符合要求的元素下标放到一个数组中,最后统一返回)。
首先我们嵌套两层循环,外层循环主要是用来取出一个元素作为定值,每次与其他元素的值(除本身以外的值)进行相加,然后与$target比对,当一个定值与元素内的元素相加后与$target对比,然后外层循环在取出数组中下一个元素作为定值,然后再与其他元素的值相加与$target对比,以此类推
说到这里,都是黑乎乎的文字?是不是不喜欢看文字?人家都强调有图有真相,当然,咱们也把图安排上,来,看下面,它来了...
图也有了,关键的代码就要安排上了,下面来一起看一下代码
function twoSum($nums,$target){ for ($i=count($nums)-1;$i>=0;$i--){ for ($j=0;$j<$i;$j++){ if($nums[$i]+$nums[$j]==$target){ return [$j,$i]; } } } return []; }
我是你们的朋友-五哥!
原文:https://www.cnblogs.com/lingxiukeji-wyj/p/13190055.html