OJ lintcode最接近的三数之和

给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。
注意事项
只需要返回三元组之和,无需返回三元组本身
您在真实的面试中是否遇到过这个题?
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++){
                    
                    //第一次减枝 如果发现一个组合,diff=0,那么直接返回
                    if(min_diff==0){
                        return target;
                    }
                    
                    
                    sum=nums[i]+nums[j]+nums[z];
                    int diff=abs(sum-target);
                    

                     //这里还可以再减一次枝
                    //因为他们是已经拍好的序列 如果当前已经大于diff,那么后面的已经没有必要遍历了
                    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;
        
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 给一个包含n个整数的数组S, 找到和与给定整数target最接近的三元组,返回这三个数的和。 样例 例如S=[-1...
    2a25936eedd9阅读 4,903评论 0 1
  • 描述 给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。 注意...
    6默默Welsh阅读 1,747评论 0 0
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,361评论 0 33
  • 给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。注意...
    DayDayUpppppp阅读 2,962评论 0 1
  • 一、觉察日记 【事实】老同学聚会,聊天陪伴孩子,同学一直在家全职带两个娃娃,现在也在学习孩子教育相关的一些内容,希...
    以诗为名阅读 1,792评论 0 0

友情链接更多精彩内容