题目:
解法一:
暴力枚举
既然要寻找两个整数,那么我们就通过遍历去找到两个元素i和j使他们的和等于target即可,注意j=i+1避免i和自己匹配
class Solution { public int[] twoSum(int[] nums, int target) { int n = nums.length; for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { if (nums[i] + nums[j] == target) { return new int[]{i, j}; } } } return new int[0]; } }解法二:
哈希表
我们可以通过创建一个哈希表去存储我们的结果,逆向思维,我们要找两个和为target的数,我们可以遍历数组,看哈希表中有没有对应的target-nums[i],如果有,我们输出这两个数,如果没有,我们就将这个数存入到哈希表中,保证下一次便利的时候不会和自己匹配,同时继续看下一个数是否满足条件。
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> hashmap=new HashMap<Integer,Integer>(); for(int i=0;i<nums.length;i++){ if(hashmap.containsKey(target-nums[i])){ return new int[]{hashmap.get(target-nums[i]),i}; } hashmap.put(nums[i],i); } return new int[0]; } }