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;
}
}
}