Close Two Sum to Capacity

first sort(), then two pointer

public class TwoClose {
    public static void main(String[] args) {
        int[] nums = {10,24,30,9,19,23,7};
        TwoClose test = new TwoClose();
        Container ans = test.closeTwoSum(nums, 35);

        System.out.println("first:" + ans.first + ", second:" + ans.second);
    }



    public Container closeTwoSum(int[] nums, int capacity) {
        Arrays.sort(nums);
        System.out.println(Arrays.toString(nums));
        int maxSum = Integer.MIN_VALUE;
        int first = 0, second = 0;

        int start = 0, end = nums.length - 1;
        while (start < end) {
            int sum = nums[start] + nums[end];
            if (sum == capacity) {
                return new Container(nums[start], nums[end]);

            } else if (sum < capacity) {
                if (sum > maxSum) {
                    first = nums[start];
                    second = nums[end];
                    maxSum = sum;
                }
                start++;
            } else {
                end--;
            }
        }

        return new Container(first, second);
    }

    class Container {
        int first;
        int second;

        public Container(int first, int second) {
            this.first = first;
            this.second = second;
        }
    }
}

results matching ""

    No results matching ""