算法-找出数组中两个元素之和等于给定的目标值

问题描述:

  1. 给定一个数组$arr,一个目标值$target
  2. 在$arr中查找出两个元素其值相加等于$target
  3. 并返回这两个元素的下标

问题示例:

  1. $arr = [2, 7, 11, 15], $target = 9
  2. nums[0] =2,nums[1] =7
  3. return [0, 1]

 

来吧,老弟,先在你的脑海中构思一下你的思路,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 [];
}

  

备注:好了,今天的文章就分享到这里,个人理解有限,不足的地方欢迎大家留言指正!

我是你们的朋友-五哥!

猜你喜欢

转载自www.cnblogs.com/lingxiukeji-wyj/p/13190055.html