LeetCode 的算法題 PHP解法記錄
給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解:
/*
兩數之和
先對數組進行從小到大的排序,然后設置首尾指針--->
假設兩指針為i,j,其中i < j,如果a[i]、a[j]之和大于指定值,那么要找的兩個數一定在j的左側,
如果a[i]、a[j]之和小于指定值,那么要找的兩個數一定在i的右側
*/
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 '結果不存在';
}
$arr= [2, 7, 11, 15,-1,0];
twoCount($arr,10);