美文网首页
从 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

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