LeetCode 的算法題 PHP解法記錄
給定一個整數(shù)數(shù)組和一個目標值锨苏,找出數(shù)組中和為目標值的兩個數(shù)霍衫。
你可以假設(shè)每個輸入只對應(yīng)一種答案身堡,且同樣的元素不能被重復(fù)利用睹酌。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解:
/*
兩數(shù)之和
先對數(shù)組進行從小到大的排序权谁,然后設(shè)置首尾指針--->
假設(shè)兩指針為i,j憋沿,其中i < j旺芽,如果a[i]、a[j]之和大于指定值,那么要找的兩個數(shù)一定在j的左側(cè)采章,
如果a[i]运嗜、a[j]之和小于指定值,那么要找的兩個數(shù)一定在i的右側(cè)
*/
function twoCount($nums=array(),$result=0){
sort($nums);
echo "<pre>";
var_dump($nums);
$a=0;
$z=count($nums)-1;
while ($a < $z ) {
# code...
if($result == ($nums[$a] + $nums[$z])){
die($nums[$a] .'和'. $nums[$z]);
}else if($result > ($nums[$a] + $nums[$z])){
$a++;
}else if($result < ($nums[$a] + $nums[$z])){
$z--;
}
}
echo '結(jié)果不存在';
}
$arr= [2, 7, 11, 15,-1,0];
twoCount($arr,10);