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).

public class Solution {
    public int threeSumClosest(int[] nums, int target) {
        
        long mindiff = Long.MAX_VALUE;
        long closet = 0;
        Arrays.sort(nums);
        
        for(int i=0;i<nums.length-2;i++)
           {
               
               int start = i+1,end =nums.length-1;
               
               while(start<end)
               {
                   long sum = nums[i] + nums[start] + nums[end];
                   long newdiff = Math.abs(sum-target);
                   if(newdiff == 0)
                       return (int)sum;
                   if(newdiff<mindiff)
                      {
                          mindiff = newdiff;
                          closet = sum;
                      }
                   if(sum>target)
                      end--;
                   else if(sum<target)
                      start++;
               }
           }
        return (int)closet;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,358评论 0 33
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 13,529评论 0 23
  • 记得小时候有一条蜿蜒曲折的小溪,它四季美如画。春天,小溪旁的竹林刚刚吐出嫩芽,看上去小小的,好像轻轻一掐就会流...
    D034雨爱雨_佛山阅读 1,373评论 0 5
  • 告别了2016年 喜气洋洋迎新年 新年里 一切都是新的 新的宝贝 新的朋友 新的进步 新的一切 在2017里一切都...
    写作星阅读 1,306评论 0 0
  • 我知道在我眼里那些最伟大的人,正如我知道那些最伟大的人眼里最伟大的我一样。 那些伟大的人,他们有两只眼睛,那些...
    可怕的军队阅读 2,299评论 0 0

友情链接更多精彩内容