哈希
1. 两数之和

暴力法:
JAVA版本:
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i = 0;i < nums.length - 1;i++){
for(int j = i + 1;j < nums.length; j++){
if(nums[i] + nums[j] == target){
return new int[]{i,j};
}
}
}
return null;
}
}哈希法:
JAVA版本:
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
map.put(target - nums[0],0);
for(int i = 1;i<nums.length;i++){
if(map.containsKey(nums[i])){
return new int[]{map.get(nums[i]),i};
}
map.put(target - nums[i],i);
}
return null;
}
}golang版本
func twoSum(nums []int, target int) []int {
nums_map := make(map[int]int)
nums_map[target - nums[0]] = 0
for i := 1;i<len(nums);i++{
idx,ok := nums_map[nums[i]]
if ok{
return []int{idx,i}
}
nums_map[target - nums[i]] = i
}
return nil
}