已知数组中有两个数的和是一个target,写算法找出这两个数的索引。如nums = [2, 7, 11, 15], target = 9,找出的index是[0, 1]
[1] 算法思路:索引化,类似数据库中的map,找到一个书x,那么寻找target-x是否在数组中。
import java.util.HashMap;
import java.util.Map;
class Solution {
public int[] twoSum(int[] nums, int target) {
int [] result = new int[2];
Map<Integer,Integer> map = new HashMap<Integer,Integer>(nums.length);
for(int j = 0 ;j < nums.length;j++){
if(map.containsKey(target-nums[j])){
result[1] = j ;
result[0] =map.get(target-nums[j]);
break;
}else{
map.put(nums[j] ,j);
}
}
return result;
}
}
[2] 算法复杂度,O(n)
、