您的位置:首页 > 其它

LintCode Two Sum Closest

2017-02-12 09:14 197 查看
description:

Given an array nums of n integers, find two integers in nums such that the sum is closest to a given number, target.

Return the difference between the sum of the two integers and the target.

Example

Given array nums = [-1, 2, 1, -4], and target = 4.

The minimum difference is 1. (4 - (2 + 1) = 1).

Note:

Two sum and those follow up we can solve them with HashMap and Two Pointer. So we must to identity which one is the best solution to your question.

public class Solution {
/**
* @param nums an integer array
* @param target an integer
* @return the difference between the sum and the target
*/
public int twoSumClosest(int[] nums, int target) {
// Write your code here
if (nums == null || nums.length < 2) {
return -1;
}
Arrays.sort(nums);
int left = 0;
int right = nums.length - 1;
int diff = Integer.MAX_VALUE;
while (left < right) {
if (target > nums[right] + nums[left]) {
diff = Math.min(diff, target - nums[right] - nums[left]);
left++;
} else {
diff = Math.min(diff, nums[right] + nums[left] - target);
right--;
}
}
return diff;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: