【day005】数组中的k-diff对的数量

"""
问题描述:
    给定一个整数数组和一个整数k,这里k-diff对被定义为整数对(i, j), 其中i和j都是数组中的数字,
他们的局对差是k,本例中将找到数组中k-diff对的数量。

问题示例:
    输入[3, 1, 4, 1, 5],k=2, 输出2,数组中有两个2-diff对, (1, 3)和(3, 5)。虽然在输入中有两个1,但只返回唯一对的数量。
    输入中{1, 2, 3, 4, 5], k=1, 输出4, 数组有四个k-diff对,(1, 2),(2, 3),(3, 4)和(4, 5)。
    输入[1, 3, 1, 5, 4], k=0, 输出1, 数组中有一个0-diff对,(1, 1)。
"""

class Solution:
    def findPairs(self, nums, k):
        if k >0:
            print(set(nums) & set(n + k for n in nums))
            return len(set(nums) & set(n + k for n in nums))
        if k == 0:  # 计数所有出现的数字>1
            return sum(v > 1 for v in collections.Counter(nums).value())
        return 0

if __name__ == '__main__':
    temp = Solution()
    List1 = [6, 3, 4, 2, 5, 1]
    num = 2
    print("输入:" + str(List1) + " " + str(num))
    print("输出:" + str(temp.findPairs(List1, num)))

"""
运行结果:
输入:[6, 3, 4, 2, 5, 1] 2
{3, 4, 5, 6}
输出:4

"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值