题目:给一个数组和一个整数target,数组中a[i]+a[j]==target,返回两数组下标i,j
思路一:从左至右遍历,每次下标在第i个上的时候依次检验后面所有的和它相加是不是target即可
class Solution {
public int[] twoSum(int[] nums, int target) {
int result[] = new int[2];
for(int i=0;i<nums.length-1;i++){ //数组长度:数组名.lenghth
for(int j=i+1;j<nums.length;j++){
if(nums[i]+nums[j]==target){
result[0]=i;
result[1]=j;
}
}
}
return result;
}
}
收获:
1.Java中数组的初始化要这样写
int result[] = new int[2];
去查了一下core java,其实也可以这样写,而且事实上Java程序员更爱像下面这样写
int[] result = new int[2];
2.数组长度用 数组名.length 来获得
思路二:利用hashmap,从左到右遍历数组,map中key是数组中的数字,value是下标。如果map中存在和数组里面的数相加等于target的数,那就把两个数对应的下标存入result并且返回即可,代码如下
class Solution {
public int[] twoSum(int[] nums, int target) {
int result[] = new int[2];
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;i++){ //数组长度:数组名.lenghth
if(Map.containsKey(target-nums[i])){
result[1]=i;
result[0]=map.get(target-nums[i]);
return result;
}else{
map.put(nums[i],i);
}
}
return result;
}
}
收获:
1.Java里面HashMap的用法
HashMap的初始化:
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
2.检测HashMap中是否存在某个值
map.containsKey(要检测的值)
3.通过key获取value
map.get(key)
4.把键值对放入map
map.put(key,value)