LeetCode:两数之和
题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
解法一:常规思路
class Solution { public int[] twoSum(int[] nums, int target) { int[] a = new int[2]; for (int i = 0; i < nums.length; i++ ) { for (int j = i+1; j < nums.length; j++) { if (target == nums[i] + nums[j]) { a[0] = i; a[1] = j; } } } return a; } }
解法二:利用hashMap的特性
class Solution { public int[] twoSum(int[] nums, int target) { int [] a = new int[2]; HashMap<Integer, Integer> hash = new HashMap<Integer, Integer>(); for (int i = 0; i < nums.length; i++) { if(hash.containsKey(nums[i])) { a[0] = i; a[1] = hash.get(nums[i]); } hash.put(target-nums[i], i); } return a; } }