题目:
设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。
示例 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;
    }
}










