LeetCode – 3Sum Closest (Java)

来源:互联网 发布:放生毒蛇 知乎 编辑:程序博客网 时间:2024/06/06 09:39

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

Thoughts

This problem is similar with 3 Sum. This kind of problem can be solve by using similar approach, i.e., two pointers from both left and right.

Java Solution

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


0 0
原创粉丝点击