美文网首页
从 n 个数中取出两个数, 使其和为 a

从 n 个数中取出两个数, 使其和为 a

作者: 风骚的风 | 来源:发表于2018-07-06 22:28 被阅读0次

采用穷举法的话, 其时间复杂度为 O((n^2)/2). 略去穷举法的实现.

采用如下实现, 其时间复杂度为 O(n), 空间复杂度增至 O(n).

public class Test {

    public static void main(String[] args) {
        int[] numberArr = {3, 5, 0, 35, 3, 25, 6, 3, 7, 6};
        int sum = 13;
        int[] result = find(numberArr, sum);
        System.out.println("满足条件的两个数的索引为: " + Arrays.toString(result));
    }

    public static int[] find(int[] numberArr, int sum) {
        Map<Integer, Integer> temp = new HashMap<>();

        for (int i = 0; i < numberArr.length; i++) {
            int number = numberArr[i];
            int target = sum - number;
            Integer targetIdx = temp.get(target);

            if (targetIdx != null) {
                return new int[]{targetIdx, i};
            } else {
                temp.put(number, i);
            }
        }

        return null;
    }
}

相关文章

  • 从 n 个数中取出两个数, 使其和为 a

    采用穷举法的话, 其时间复杂度为 O((n^2)/2). 略去穷举法的实现. 采用如下实现, 其时间复杂度为 O(...

  • 无序排列组合的计算

    n个数中取出m个的组合数( 例如:从1,2,3,4随机取出2个数,一共有6种) 2.表示从n个元素中取出m个元素的...

  • 从 n 个数中取连续的 m 个数, 使其和最大

    穷举法的时间复杂度为 O(nm - m^2), 略去实现. 以下实现的时间复杂度为 O(n - m), 空间复杂度...

  • java学习

    从N个数字中取出K个数字共有多少种取法Cn n*(n-1)*(n-2)*(n-3)....(n-k+1)/1*2*...

  • R统计:排列组合

    导读 排列数:从n个不同元素中取出m(m≤n)个元素的所有不同排列的个数。组合数:从n个不同元素中取出m(m≤n)...

  • 含有重复字符的字符串排列组合

    1. 定义 排列:从给定个数的元素中取出指定个数的元素进行排序组合:从给定个数的元素中取出指定个数的元素,不考虑排...

  • 公考中的排列组合(持续更新)

    所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,...

  • 枚举算法作业(三)

    时间限制 1000 ms内存限制 64 MB题目描述给你一个长度为n的数组和一个正整数k,问从数组中任选两个数使其...

  • 组合数算法

    一、概念 什么是组合数呢? 从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元...

  • 搜索问题

    问题抽象① 从N个数中选择x个数,使其满足一定的条件。这个在搜索算法中非常有用。(用递归完成) 例如:输入N个数,...

网友评论

      本文标题:从 n 个数中取出两个数, 使其和为 a

      本文链接:https://www.haomeiwen.com/subject/qvqiuftx.html