給定乙個包括 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...