##LeetCode—1. Two Sum
####题目
https://leetcode.com/problems/two-sum/description/
给出一个数组和一个target,在数组中找到两个数他们的和是target,返回两个数的下标。假设数组中一定存在这样的两个数。
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
####思路及解法
解法一:暴力解法,两层循环,找到两数。不多说。复杂度n的平方
解法二:使用hashmap,复杂度n
####代码
class Solution {//暴力解
public int[] twoSum(int[] nums, int target) {
int m = 0;
int[] arr = {0 , 0};
for(int i = 0; i < nums.length; i++){
m = target - nums[i] ;
for(int j = i+1; j <nums.length; j ++){
if(m == nums[j]){
arr[0] = i;
arr[1] = j;
}
}
}
return arr;
}
}
class Solution {
public int[] twoSum(int[] nums, int target) {
int m = 0;
int[] arr = {0 , 0};
HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
for(int i = 0; i < nums.length; i++){
hm.put(nums[i] , i);
}
for(int i = 0; i < nums.length; i++){
m = target - nums[i];
if(hm.containsKey(m) && hm.get(m)!=i){
arr[0] = i;
arr[1] = hm.get(m);
return arr;
}
}
return arr;
}
}