题目

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

动态描述

算法 0001.两数之和 - 图1

代码实现

  1. # 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
  2. #
  3. # 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
  4. #
  5. #
  6. #
  7. # 示例:
  8. #
  9. # 给定 nums = [2, 7, 11, 15], target = 9
  10. #
  11. # 因为 nums[0] + nums[1] = 2 + 7 = 9
  12. # 所以返回 [0, 1]
  13. #
  14. # Related Topics 数组 哈希表
  15. # 👍 8773 👎 0
  16. # leetcode submit region begin(Prohibit modification and deletion)
  17. class Solution(object):
  18. def twoSum(self, nums, target):
  19. """
  20. :type nums: List[int]
  21. :type target: int
  22. :rtype: List[int]
  23. """
  24. dic = {}
  25. for i, num in enumerate(nums):
  26. if target - num in dic:
  27. return [dic[target - num], i]
  28. dic[num] = i
  29. # leetcode submit region end(Prohibit modification and deletion)
  30. if __name__ == '__main__':
  31. nums = [2, 7, 11, 15]
  32. target = 9
  33. res = Solution().twoSum(nums, target)
  34. print(res)