OJ lintcode最接近的三數(shù)之和

給一個包含 n 個整數(shù)的數(shù)組 S, 找到和與給定整數(shù) target 最接近的三元組,返回這三個數(shù)的和。
注意事項
只需要返回三元組之和,無需返回三元組本身
您在真實的面試中是否遇到過這個題?
Yes
樣例
例如 S = [-1, 2, 1, -4] and target = 1. 和最接近 1 的三元組是 -1 + 2 + 1 = 2.

class Solution {
public:    
    /**
     * @param numbers: Give an array numbers of n integer
     * @param target: An integer
     * @return: return the sum of the three integers, the sum closest target.
     */
    int threeSumClosest(vector<int> nums, int target) {
        // write your code here
        int min_diff=abs(nums[0]+nums[1]+nums[2]-target);
        int min_sum=nums[0]+nums[1]+nums[2];
        int sum=0;
        sort(nums.begin(),nums.end());
        for(int i=0;i<nums.size();i++){
            for(int j=i+1;j<nums.size();j++){
                for(int z=j+1;z<nums.size();z++){
                    
                    //第一次減枝 如果發(fā)現(xiàn)一個組合,diff=0,那么直接返回
                    if(min_diff==0){
                        return target;
                    }
                    
                    
                    sum=nums[i]+nums[j]+nums[z];
                    int diff=abs(sum-target);
                    

                     //這里還可以再減一次枝
                    //因為他們是已經(jīng)拍好的序列 如果當(dāng)前已經(jīng)大于diff,那么后面的已經(jīng)沒有必要遍歷了
                    int flag=0;
                    if(sum-target>0){
                        flag=1;
                    }
                    else{
                        flag=-1;
                    }

                    if(diff<min_diff){
                        min_diff=diff;
                        min_sum=sum;
                    }

                    if(flag==1){
                        break;
                    }
                

                }
            }
        }
        return min_sum;
        
    }
};
最后編輯于
?著作權(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)容

  • 給一個包含n個整數(shù)的數(shù)組S, 找到和與給定整數(shù)target最接近的三元組,返回這三個數(shù)的和。 樣例 例如S=[-1...
    2a25936eedd9閱讀 1,246評論 0 1
  • 描述 給一個包含 n 個整數(shù)的數(shù)組 S, 找到和與給定整數(shù) target 最接近的三元組,返回這三個數(shù)的和。 注意...
    6默默Welsh閱讀 276評論 0 0
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,921評論 0 33
  • 給出一個有n個整數(shù)的數(shù)組S,在S中找到三個整數(shù)a, b, c,找到所有使得a + b + c = 0的三元組。注意...
    DayDayUpppppp閱讀 413評論 0 1
  • 一、覺察日記 【事實】老同學(xué)聚會,聊天陪伴孩子,同學(xué)一直在家全職帶兩個娃娃,現(xiàn)在也在學(xué)習(xí)孩子教育相關(guān)的一些內(nèi)容,希...
    以詩為名閱讀 287評論 0 0

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