• 程序员面试金典-面试题 16.24. 数对和


    题目:

    设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。

    示例 1:

    输入: nums = [5,6,5], target = 11
    输出: [[5,6]]

    示例 2:

    输入: nums = [5,6,5,6], target = 11
    输出: [[5,6],[5,6]]

    提示:

    • nums.length <= 100000

    分析:

    现将数组排序,然后双指针从前后一起遍历,判断两个数的和和目标数的关系,从而移动指针。

    程序:

    class Solution {
        public List<List<Integer>> pairSums(int[] nums, int target) {
            Arrays.sort(nums);
            List<List<Integer>> res = new ArrayList<>();
            int i = 0, j = nums.length - 1;
            while(i < j){
                if(nums[i] + nums[j] == target){
                    List<Integer> r = new ArrayList<>();
                    r.add(nums[i]);
                    r.add(nums[j]);
                    res.add(r);
                    i++;
                    j--;
                }else if(nums[i] + nums[j] < target){
                    i++;
                }else{
                    j--;
                }
            }
            return res;
        }
    }
  • 相关阅读:
    substr函数
    Oracle 日期处理
    translate函数使用
    nvl函数
    random随机函数
    case语句
    列的拼接
    并行HASH JOIN小表广播问题
    WITH AS 优化逻辑读
    【hihoCoder挑战赛28 A】异或排序
  • 原文地址:https://www.cnblogs.com/silentteller/p/12518707.html
Copyright © 2020-2023  润新知