首页 > 其他 > 详细

p137 求和最接近目标值的三个数(letcode 16)

时间:2020-04-16 20:24:15      阅读:58      评论:0      收藏:0      [点我收藏+]

一:解题思路

Time:O(n^2),Sapce:O(1)

之前做过一道求3个数的和等于0的组合,解题方法与这个题目几乎一样。

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) 
    {
        int minValue = 2147483647;
        int result = 0;
        sort(nums.begin(),nums.end());
        for (int k = nums.size() - 1; k >= 2; k--)
        {
            int i = 0, j = k - 1;
            while (i < j)
            {
                int sum = nums[i] + nums[j] + nums[k];
                if (sum == target) return sum;
                else if (sum < target) i++;
                else j--;

                int diff = abs(sum-target);
                if (diff < minValue)
                {
                    minValue = diff;
                    result = sum;
                }
            }
        }

        return result;
    }
};

Java:

class Solution {
        public int threeSumClosest(int[] nums, int target)
        {
               int result=0;
               int minValue=Integer.MAX_VALUE;
               Arrays.sort(nums);
               for(int k=nums.length-1;k>=2;k--)
               {
                   int i=0,j=k-1;
                   while (i<j)
                   {
                       int sum=nums[i]+nums[j]+nums[k];
                       if(sum==target) return sum;
                       else if(sum<target) i++;
                       else j--;
                       
                       int diff=Math.abs(sum-target);
                       if(diff<minValue)
                       {
                           minValue=diff;
                           result=sum;
                       }
                   }
               }
               
               return result;
        }
    }

 

p137 求和最接近目标值的三个数(letcode 16)

原文:https://www.cnblogs.com/repinkply/p/12715100.html

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