1 public class Solution { 2 public int[] twoSum(int[] nums, int target) { 3 int[] result = {-1, -1}; 4 if (nums == null || nums.length < 2) { 5 return result; 6 } 7 HashMap<Integer, Integer> map = new HashMap(); 8 for (int i = 0; i < nums.length; i++) { 9 if (map.containsKey(target - nums[i])) { 10 result[0] = map.get(target - nums[i]) + 1; 11 result[1] = i + 1; 12 break; 13 } 14 map.put(nums[i], i); 15 } 16 return result; 17 } 18 }
最高频面试题2sum
一道做烂了的题目多想想还是有很多值得注意的地方
这里遍历一次,一边加一边找的做法很好。如果不需要返回下标也可以排序后双指针夹逼
本文代码时间复杂度O(N), 空间复杂度O(N)
排序夹逼做法时间O(NlogN), 空间O(1)
时间: 2024-10-23 09:29:40