<?php

//一个leetcode的题目,提供一个数组与和 筛选出数组中加起来等于这个和的元素
/**
*
*两层循环解法
*/

function test($arr,$target) {

    $count = count($arr);
    $used = [];
    $result = [];

    for($i=0;$i<$count;$i++) {
        $num1 = $arr[$i];
        if(in_array($num1,$used)) {
            continue;
        }
        
        for($j=$i+1;$j<$count;$j++) {
            $num2 = $arr[$j];
            if(in_array($num2,$used)) {
                continue;
            }
            if($num1+$num2 == $target) {
                $tmp = [$num1,$num2];
                array_push($used,$num1,$num2);
                $result[] = [$i,$j];
            }
        }
    }

    return $result;
}

/**
*
* 一层循环解法
*
*/
function test1($arr,$target) {
    $used = [];
    $result = [];
    for($i=0;$i<count($arr);$i++) {
        $num = $arr[$i];

        if(in_array($num,$used)) {
            continue;
        }
    
        $sub = $target - $num;
        // 如果差在数组当中
        if(in_array($sub,$arr)) {
            array_push($used,$num,$sub);
            $result[] = [$i,array_search($sub,$arr)];  
        }
    }
    
    return $result;
}

$nums = [2, 7, 3, 6,1,8];
$target  = 9;



var_dump(test1($nums,$target));

 

posted on 2019-09-24 13:58  沉默的土豆  阅读(141)  评论(0编辑  收藏  举报