首页 > 其他 > 详细

【leetcode】16. 最接近的三数之和

时间:2020-12-08 09:34:20      阅读:19      评论:0      收藏:0      [点我收藏+]

 

#define INT_MAX 2147483647
int cmp(const void* a, const void* b){
    return *(int*)a - *(int*)b; // 快排构造递增序列
}
int threeSumClosest(int* nums, int numsSize, int target){
    int cur=0;
    int left = cur + 1, right = numsSize - 1, minVal = INT_MAX, ret=0, temp;

    qsort(nums, numsSize, sizeof(int), cmp);
    while (cur < numsSize - 2){

        left = cur + 1; right = numsSize - 1;

        while (left < right){
            temp = nums[cur] + nums[left] + nums[right];
            if (abs( temp - target) < minVal){
                minVal = abs(temp - target);
                ret = temp;
            }
            if (temp == target)
                return temp;        
            else if (temp < target){
                while (nums[left] == nums[++left] && left < right);
            }            
            else{
                while (nums[right] == nums[--right] && left < right);
            }                    
        }
        while (nums[cur] == nums[++cur] && cur < numsSize - 2);
    }
    return ret;
}

 

【leetcode】16. 最接近的三数之和

原文:https://www.cnblogs.com/ganxiang/p/14100379.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!