这题的暴力模式是两个for循环,将第一个for循环的形式是将 目标值减去 第一个nums[i] 值找出,然后通过第二个for循环匹配,找到所需要的的值,并返回结果,这样的思路是复杂度较高,需要n² 。这里java 0基础的需要复习的要点在于 int[] = new int[2]; 第二个规范在于java取交集为&&。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
for (int i = 0;i
int v = target - nums[i];
for(int j = 0; j < nums.length; j++){
if (nums[j] == v && i != j){
result[0]=i;
result[1]=j;
return result;
}
}
}
return result;
}
}
为了使得代码的复杂度降低,我们可以采取第二种形式,是通过java中的hashmap 的方法,在这里无基础的也将可以使用hashmay 的用法Map map = new HashMap<>();
map.put 是将键值推入
map.containsKey 是找到值,而map.get 是获取键
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
Map map = new HashMap<>();
for (int i = 0; i < nums.length; i++)
map.put(nums[i],i);
for (int i = 0; i < nums.length; i++) {
int v = target - nums[i];
if (map.containsKey(v) && i != map.get(v)){
result[0] = i;
result[1] = map.get(v);
return result;
}
}
return result;
}
}