LeetCode 16 最接近的三數之和

2021-09-24 05:59:54 字數 731 閱讀 3928

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

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

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

這個其實可以受到三數之和的一些啟發;

用到 : 排序和三數之和

如果暴力尋找,時間複雜度將會是o(n*n*n);

如果用快排,時間複雜度是o(nlogn),這也是值得的;

設定下標 i ,i 從 0 到 len-3;

設定下標left,從 i + 1 到 len-2;

設定下標right,從 len-1 到 2;

根據 sum = num[i] + num[left] + num[right] 與target進行比較,如果這倆值更接近,則更新sum

同時判斷sum和tartget,如果sum < target,則left++;如果sum > target,則right--;

如果sum = target,則直接返回 num[i] ,num[left] ,num[right]

整個過程,i 要遍歷n次,left和right也要遍歷n次,所以時間複雜度是o(n*n)

所以總的時間複雜度是o(n*n) + o(nlogn) = o(n*n)。

LeetCode 16 最接近的三數之和

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

leetcode 16 最接近的三數之和

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

Leetcode 16 最接近的三數之和

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