代码中使用的空字典是什么?

时间:2018-11-21 06:34:10

标签: python-3.x

我在Leetcode上的python中进行练习问题(仍在学习中)。这就是问题: 给定一个整数数组,返回两个数字的索引,以便它们加起来成为一个特定的目标。

您可以假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。

示例:

给出数字= [2,7,11,15],目标= 9,

因为nums [0] + nums [1] = 2 + 7 = 9, 返回[0,1]。

我的代码是

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        dict = {}
        for counter, i in enumerate(nums):
            a = target- i
            if a in dict:
                return (dict[a], counter)
            dict[i] = counter

它可以正常运行并通过所有测试,但是我发现这样做的普遍原因是dict = {} 使用该词典的原因是什么,以及该代码如何识别(3,3)target = 6的情况,其中重复和索引很重要。基本了解代码为何有效!

2 个答案:

答案 0 :(得分:0)

字典将列表中的数字作为索引存储为键。

例如:

While

永远不会插入重复项,如果相同的数字出现两次,则索引将被出现的新索引替换。

答案 1 :(得分:0)

对于重复项,重要的是测试第一个列表上的所有值,并将索引存储在单独的字典上,以确保您永远不会在字典中测试实际测试的值。

使用字典来查找正确数字的索引,就不能存储重复项。 因为在字典中您不能有两个具有相同键的值,所以如果有重复键,则只需用新的键更改旧的索引。

例如,如果dict == {'3': 0, '2':1}的测试值为2,则dict == {'3': 0, '2':2}

如果目标通过重复编号到达(例如目标2+2的{​​{1}}),则4中不会存储任何导致返回的原因