16 3 sum closest

https://leetcode.com/problems/3sum-closest/

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

็›ด่ง‰็ปˆไบŽๅฏนไบ†ไธ€ๆฌก

Last updated