zoukankan      html  css  js  c++  java
  • 算法-找出数组中两个元素之和等于给定的目标值

    问题描述:

    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 [];
    }
    

      

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

    我是你们的朋友-五哥!

  • 相关阅读:
    对软件未来走向的看法
    ubuntu:configure error:cannot find ssl libraries
    linux CentOS普通用户无法从ssh登录解决方案
    Can't locate IPC/Run.pm in @INC
    我也学erlang(一)
    我也学erlang(二)
    我也学erlang(四)
    第一篇献给church(丘奇)
    出现epoll failed: Bad file descriptor的原因
    最近看代码的一点总结
  • 原文地址:https://www.cnblogs.com/lingxiukeji-wyj/p/13190055.html
Copyright © 2011-2022 走看看