/** * 假如使用暴力算法,那么这个题的时间复杂度是 O(N^2),所以需要找到更加快的方法,比如有没有可能O(N)或者O(logN)? * 首先想到 哈希表, 映射的方法,时间复杂度是O(N),空间复杂度O(N) */ public int[] twoSum(int[] nums, int target) { HashMap<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int a = target - nums[i]; if (map.containsKey(a)) { return new int[]{map.get(a), i}; } map.put(nums[i], i); } return new int[2]; }