1187. 数组中的K-diff对

1187. 数组中的K-diff对

中文English

给定一个整数数组和一个整数k,您需要找到数组中唯一k-diff对的数量。这里k-diff对被定义为整数对(i, j),其中i和j都是数组中的数字,它们的绝对差是k。

样例

样例 1:

输入: [3, 1, 4, 1, 5], k = 2
输出: 2
说明:数组中有两个2-diff对,(1, 3)和(3, 5)。
虽然我们在输入中有两个1,但我们应该只返回一对(1,3)。

样例 2:

输入:[1, 2, 3, 4, 5], k = 1
输出: 4
说明:数组中有四个1-diff对, (1, 2), (2, 3), (3, 4) 和 (4, 5).

样例 3:

输入: [1, 3, 1, 5, 4], k = 0
输出: 1
说明:数组中有一个0-diff对,(1, 1).

注意事项

1.对(i,j)和(j,i)计为同一对。
2.数组的长度不超过10,000。
3.给定输入中的所有整数都属于以下范围:[ -1e7, 1e7]。

输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param nums: an array of integers
    @param k: an integer
    @return: the number of unique k-diff pairs
    """
    '''
    大致思路:
    1.初始化res = [] ,给出所有的两位数组,然后给出差值,如果差值的绝对值=k的话,append到res里面,最终返回res的长度即可。
    '''
    def findPairs(self,nums,k):
        res = []
        for i in range(len(nums)-1):
            for j in range(i+1,len(nums)):
                if abs(nums[j]-nums[i]) == k and [nums[i],nums[j]] not in res:
                    res.append([nums[i],nums[j]])
        return len(res)

注:lintcode未通过,你的代码运行时间超过了限制,检查你的时间复杂度。TLE通常是由死循环造成的,思考一下你的时间复杂度是否是最优的。待优化

posted @ 2020-04-18 14:41  风不再来  阅读(172)  评论(0编辑  收藏  举报