Java之求陣列中兩個數之和
阿新 • • 發佈:2018-12-01
給定一個整數陣列 nums
和一個目標值 target
,請你在該陣列中找出和為目標值的 兩個 整數。
你可以假設每種輸入只會對應一個答案。但是,你不能重複利用這個陣列中同樣的元素。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
通過使用空間換取時間,降低時間複雜度
時間複雜度O(n)
空間複雜度o(n)
public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = newHashMap<>(); for (int i = 0; i < nums.length; i++) { int complement = target - nums[i]; if (map.containsKey(complement)) { return new int[] { map.get(complement), i }; } map.put(nums[i], i); } throw new IllegalArgumentException("No two sum solution"); }