LeetCode1. 兩數之和
阿新 • • 發佈:2020-12-10
一、題目描述
二、解法
class Solution { public int[] twoSum(int[] nums, int target) { /** * 方法1:暴力列舉。 * 時間複雜度O(n^2),空間複雜度O(1) */ /*for (int i = 0; i < nums.length; i++) { for (int j = i+1; j < nums.length; j++) { if (nums[j] == target - nums[i]) { return new int[]{i,j}; } } } return new int[]{-1,-1};*/ /** * 方法2:雜湊表 * 時間複雜度O(n),空間複雜度O(n) * 注意先判斷,再存入。否則出現 [3,2,4] 6 返回[0,0]的情況,即當前元素使用了兩次。 */ Map<Integer,Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if (map.containsKey(target - nums[i])) {return new int[]{map.get(target-nums[i]), i}; } map.put(nums[i], i); } return new int[]{-1,-1}; } }