我正在尝试计算不重复对的数量,但出现错误

时间:2019-03-17 10:16:56

标签: python python-3.x algorithm list

我最近决定开始解决编码问题,并且我已经为两天的“计数对”问题苦苦挣扎了。

问题表明,如果(a,b)的至少一个元素不在(c,d)中,则两个整数(a,b)和(c,d)的派斯被认为是不同的(例如; givien a列表(1,3,3,4),(1,3)与(1,4)和(3,4)不同,但与(1,3)不同,其中2是从列表中的另一个索引中选择的。如果a <= b!

,则该对有效

所以我必须编写一个函数,该函数返回列表中具有指定差X(a + X = b)的有效对的数量

def countPairs(liste, X):
    # Write your code here
    count = 0
    liste.sort()
    j=0
    d=0
    while d<len(liste):
        if liste[d]-liste[j]==X:
            count=count+1
            j=j+1
            d=d+1
        elif liste[d]-liste[j]>X:
            j=j+1
        else:
            d=d+1
    return count

谢谢!

1 个答案:

答案 0 :(得分:1)

您无需在解决方案中检查与众不同的对。查看在liste = [1, 1, 3, 3]X = 2时会发生什么。您将计算两对,其中一对的元素索引为(0,2),另一对的索引为(1,3)。

要省略重复项,可以使用不允许重复的数据结构:set。您可以在这样的数据结构之间进行转换:

set(liste)
list(set(liste))

我想假设是X >= 0