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");