16 最接近的三數之和

2021-09-11 19:44:01 字數 1103 閱讀 5816

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

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

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

思考:和15.三數之和一樣,雙指標left和right來遍歷陣列,dif來記錄乙個初始差值(3個數的和與target)。有幾點一開始沒想清楚。

1、一開始我只儲存了乙個最小差值,然後發現做不出來,因為最接近相當於是乙個絕對值運算,最後如果不儲存3個數之和,根據絕對值的差異再去求三個數很複雜。

2、在判斷指標移動的時候,思考錯了,弄了比較長時間。

//if(closest >sum)

/*最接近的三數之和與當前三數和的比較,和指標怎麼走向沒關係汗...

應該:當前的三數之和sum 和 target 比較就行了啊*/

if(sum > target)

right--;

else

left++;

}

3、判斷迴圈次數的條件:這次用的陣列總元素減去2個,相當於肯定你選3個數,當前的和 left 和 right。正好。可是以前為啥都用nums.size()?沒太懂,因為這個時間複雜度基本不影響(額多迴圈2次還是有影響),就沒管了。。還是寫這次的寫法。

for(int i = 0; i< nums.size() -2 ;i++) 這次寫法

// for(int i = 0; i< nums.size() ;i++) 以前的寫法

**:

class solution 

//if(closest >sum)

if(sum > target)

right--;

else

left++;}}

return closest;

}};

16 最接近的三數之和

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

16 最接近的三數之和

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

16 最接近的三數之和

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