题目:
设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。
示例 1:
输入: nums = [5,6,5], target = 11
输出: [[5,6]]
示例 2:
输入: nums = [5,6,5,6], target = 11
输出: [[5,6],[5,6]]
代码实现:
class Solution {
public List<List<Integer>> pairSums(int[] nums, int target) {
List<List<Integer>> list = new ArrayList<>();
if (nums == null || nums.length == 0) {
return list;
}
int n = nums.length;
Arrays.sort(nums);
int left = 0;
int right = n - 1;
while (left < right) {
int x = nums[left];
int y = nums[right];
if (x + y == target) {
List<Integer> temp = new ArrayList<>();
temp.add(x);
temp.add(y);
list.add(temp);
left++;
right--;
} else if (x + y > target) {
right--;
} else {
left++;
}
}
return list;
}
}