力扣高頻演算法php PHP演算法之最接近的三數之和

2021-10-13 14:54:23 字數 903 閱讀 4421

給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。

例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.

與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).

解題思路

返回三個數之和 運用雙向指標法

1.現將陣列排序

2.根據結果求絕對值 比較 那邊更接近 結果

3.比結果小了左邊指標 向右移動一位 ,右邊大了向左移動一位

class solution {

* @param integer $nums

* @param integer $target

* @return integer

function threesumclosest($nums, $target) {

sort($nums);

$count = count($nums);

$ans = $nums[0] + $nums[1] + $nums[2];

for( $i=0;$i

$start = $i+1; $end = $count - 1;

while($start 

$sum = $nums[$start] + $nums[$end] + $nums[$i];

if(abs($target - $sum) 

$ans = $sum;

if($sum > $target)

$end--;

else if($sum 

$start++;

else

return $ans;

return $ans;

原文:

力扣演算法題

給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。但是,陣列中同乙個元素不能使用兩遍。思路一 暴力列舉 將陣列中的每個元素都拿來與後面的元素逐一相加,然後與目標值作比較,如果正確則直接返回下標值。那麼,就會有最壞的情況...

力扣演算法題

題目描述如下 羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況...

力扣 初級演算法之加一

加一 給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4...