1.冒泡排序思路,第一个与之后所有值依次相加,如不满足条件,则第二个数与之后所有值依次相加,以此类推,但是通过不了,说是时间太久

  • 时间复杂度 2个循环
  • 空间复杂度 1个数组
int[] n={-1,-1};
        for(int i=0;i<numbers.length-1;i++){
            for(int j=i+1;j<numbers.length;j++) {
                if (numbers[i] + numbers[j] == target) {
                    n[0] = i+1;
                    n[1] = j+1;
                    System.out.println(Arrays.toString(n));
                    return n;
                }
            }
        }
        System.out.println(Arrays.toString(n));
        return n;

2. 哈希map key包含的方式,使用target依次减去数组的每个值,如所得差在map的key中包含,则返回key对应的value,否则,以数组值,数组下标方式存入hashmap中

  • 时间复杂度 1个循环
  • 空间复杂度 1个hashmap
HashMap<Integer,Integer> map = new HashMap<>();
    for(int i=0;i<numbers.length;i++){
        if(map.containsKey(target-numbers[i]))
            return new int[]{map.get(target-numbers[i])+1,i+1};
        else
            map.put(numbers[i],i);
    }
    throw new IllegalArgumentException("No solution");