16. 3Sum Closest

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

For example, given array S = {-1 2 1 -4}, and target = 1.

The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

這道題一開始我把是固定left和right,然后讓i在中間循環(huán),后來發(fā)現(xiàn)越來越混亂。之后看了答案,答案是先循環(huán)i, 然后用two pointers讓left和right左右移動,就顯得簡單很多。

class Solution {
    public int threeSumClosest(int[] nums, int target) {
        Arrays.sort(nums);
        int minDiff = Integer.MAX_VALUE;
        int closestSum = 0;
        for (int i = 0; i < nums.length; i++){
           int left = i + 1;
           int right = nums.length - 1;
           while (left < right){
               int sum = nums[i] + nums[left] + nums[right];
               int diff = Math.abs(target - sum);
               if (diff < minDiff){
                   minDiff = diff;
                   closestSum = sum;
               }
               if (sum < target){
                   left++;
               } else {
                   right--;
               }  
           } 
        } 
        return closestSum;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,890評論 0 33
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 11,006評論 0 23
  • 我是日記星球284號星寶寶延軍,我正在參加日記星球第八期蛻變之旅,這是我的第5篇原創(chuàng)日記。 很想寫...
    靈清的玉閱讀 820評論 6 5
  • 文不在長短, 在于是否有用; 事不在多少, 在于是否進步; 時間不在投入多少, 在于是否專注。
    朱團輝閱讀 207評論 0 5
  • 年末,回想今年最大的收獲,不是考上什么研究生、更不是拿了什么獎,而是來自一份付費訂閱。 這是我從今年9月底,花19...
    趙木林閱讀 433評論 1 2

友情鏈接更多精彩內(nèi)容