力扣1. 兩數之和
阿新 • • 發佈:2020-09-12
題目
給定一個整數陣列 nums和一個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素不能使用兩遍。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
方式一
解題思路:
暴力法,直接雙重迴圈。
程式碼:
public static int[] twoSum(int[] nums, int target) { int length = nums.length; int[] t = new int[2]; for (int i = 0; i < length; i++) { int a = target - nums[i]; for (int j = i + 1; j < length; j++) { if (nums[j] == a) { t[0] = i; t[1] = j; return t; } } } return null; }
方式二
解題思路:
使用HashMap,存放target減去nums陣列中數字的結果。
程式碼:
public static int[] twoSum(int[] nums, int target) { HashMap<Integer, Integer> hashMap = new HashMap<>(); int[] a = new int[2]; for (int i=0;i<nums.length;i++){ if (hashMap.containsKey(nums[i])){ a[0]=i; a[1]=hashMap.get(nums[i]); return a; } hashMap.put(target-nums[i],i); } return null; }