我最近决定开始解决编码问题,并且我已经为两天的“计数对”问题苦苦挣扎了。
问题表明,如果(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
谢谢!
答案 0 :(得分:1)
您无需在解决方案中检查与众不同的对。查看在liste = [1, 1, 3, 3]
和X = 2
时会发生什么。您将计算两对,其中一对的元素索引为(0,2),另一对的索引为(1,3)。
要省略重复项,可以使用不允许重复的数据结构:set。您可以在这样的数据结构之间进行转换:
set(liste)
list(set(liste))
我想假设是X >= 0
。