3Sum Closest

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.

思路:

  典型的双指针问题

我的代码:

public class Solution {

    public int threeSumClosest(int[] num, int target) {

        int min = Integer.MAX_VALUE;

        if(num == null || num.length < 3)   return min;

        int res = num[0] + num[1] + num[2];

        Arrays.sort(num);

        for(int i = 0; i < num.length - 2; i++)

        {

            int val = num[i];

            int left = i + 1;

            int right = num.length - 1;

            while(left < right)

            {

                int sum = val + num[left] + num[right];

                int gap = Math.abs(target - sum);

                if(min > gap)

                {

                    min = gap;

                    res = sum;

                }

                if(target == sum)

                {

                    return target;

                }

                else if(target > sum)

                {

                    left++;

                }

                else

                {

                    right--;

                }

            }

        }

        return res;

        

    }

}
View Code

 

你可能感兴趣的:(close)