class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ hash_map = dict() for i, v in enumerate(nums): k = target - v if k in hash_map: return [hash_map[k], i] hash_map[v] = i
老师,有个疑问,以下得这个时间复杂度不也是n平方吗?放入map也有一层循环不是? public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { map.put(nums[i], i); } for (int i = 0; i < nums.length; i++) { int complement = target - nums[i]; if (map.containsKey(complement) && map.get(complement) != i) { return new int[] { i, map.get(complement) }; } } throw new IllegalArgumentException("No two sum solution"); }
func twoSum(nums []int, target int) []int { var nums_flip map[int]int nums_flip = make(map[int]int) var r [] int for i, v := range nums { nums_flip[v] = i } for i, v := range nums { var tag2 = target - v if i2, ok := nums_flip[tag2]; ok { if i !=i2 { r = append(r, i) r = append(r, i2) return r } } }