【算法】两数之和
兩數之和
題目描述
給出一個整數數組,請在數組中找出兩個加起來等于目標值的數,
你給出的函數twoSum 需要返回這兩個數字的下標(index1,index2),需要滿足 index1 小于index2.。注意:下標是從1開始的
假設給出的數組中只存在唯一解
例如:
給出的數組為 {20, 70, 110, 150},目標值為90
輸出 index1=1, index2=2
輸入
[3,2,4],6
返回值
[2,3]
暴力破解法
public int[] twoSum(int[] nums, int target) {int length = nums.length;for (int i = 0; i < length - 1; i++) {for (int j = i + 1; j < length; j++)if (nums[i] + nums[j] == target)return new int[]{i+1, j+1};}return new int[]{-1, -1};}使用HashMap解決
public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> m = new HashMap<>();for (int i = 0; i < nums.length; i++) {if (m.get(target - nums[i]) != null) {return new int[]{m.get(target - nums[i])+1, i+1};}m.put(nums[i], i);}return new int[]{0, 0};}總結
- 上一篇: 【算法】最小的K个数
- 下一篇: 【Java进阶】Spring Cloud