zoukankan      html  css  js  c++  java
  • 程序员面试金典-面试题 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;
        }
    }
  • 相关阅读:
    操作系统基础知识与常见问题记录
    String
    Function
    HelloWorld
    替换空格
    二维数组中的查找
    建造者模式(Builder Pattern)
    单例模式(Singleton Pattern)
    工厂方法(Factory Pattern)
    设计模式概述
  • 原文地址:https://www.cnblogs.com/silentteller/p/12518707.html
Copyright © 2011-2022 走看看