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

Solution

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

        int minDiff = Integer.MAX_VALUE;
        int size = num.length;

        int  resultValue = -1;

        Arrays.sort(num);

        for(int i = 0; i <= size - 3; i ++){
            int start = i + 1;
            int end = size - 1;

            while(start < end){
                int sum = num[i] + num[start] + num[end];
                if(minDiff > Math.abs(sum - target)){
                    minDiff = Math.abs(sum - target);
                    resultValue = sum;
                }

                if(sum < target)
                    start ++;
                else if(sum > target)
                    end --;
                else
                    return target;

            }
        }

        return resultValue;
    }

}

results matching ""

    No results matching ""