算法-找出數組中兩個元素之和等於給定的目標值


問題描述:

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

  

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

我是你們的朋友-五哥!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM