我是靠谱客的博主 怡然钢笔,最近开发中收集的这篇文章主要介绍two sum python_leetcode1.Two Sum两数之和(哈希表)python,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

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

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

所以返回 [0, 1]

思路:

思路1.两层for循环遍历列表,但时间复杂度是O(N²)。

class Solution(object):

def twoSum(self, nums, target):

"""

:type nums: List[int]

:type target: int

:rtype: List[int]

"""

for i in range(len(nums)):

for j in range(i+1, len(nums)):

if nums[i] + nums[j] == target:

return [i, j]

思路2.哈希表(hash table) :把key值映射到哈希表中一个位置来访问,时间复杂度是O(N)。哈希表具体知识,可以看Hash表的理论基础与具体实现(详细教程)

建立nums_hash

寻找和为target的2个数

返回下标

class Solution:

def twoSum(self, nums, target):

"""

:type nums: List[int]

:type target: int

:rtype: List[int]

"""

nums_hash = {}

nums_len = len(nums)

for i in range(nums_len):

dif = target - nums[i]

if dif in nums_hash:

return [nums_hash[dif], i]

nums_hash[nums[i]] = i

return []

if __name__ == '__main__':

nums = [1, 2, 3]

target = 3

print(Solution().twoSum(nums, target))

最后

以上就是怡然钢笔为你收集整理的two sum python_leetcode1.Two Sum两数之和(哈希表)python的全部内容,希望文章能够帮你解决two sum python_leetcode1.Two Sum两数之和(哈希表)python所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部