Python查找重复项:查找是否有重复的数字,并且索引diff最多为k

Python查找重复项:查找是否有重复的数字,并且索引diff最多为k,python,python-3.x,duplicates,Python,Python 3.x,Duplicates,给定一个整数数组和一个整数k,找出数组中是否有两个不同的索引i和j,使得nums[i]=nums[j],并且i和j之间的绝对差最多为k 例1: 输入:nums=[1,2,3,1],k=3 输出:真 例2: 输入:nums=[1,0,1,1],k=1 输出:真 例3: 输入:nums=[1,2,3,1,2,3],k=2 输出:false 我一直在看我的代码好10分钟,但仍然不明白是什么出了问题。。。我的代码运行,但对于示例1它返回True,对于示例2它返回False,对于示例3它返回True。(示

给定一个整数数组和一个整数k,找出数组中是否有两个不同的索引i和j,使得nums[i]=nums[j],并且i和j之间的绝对差最多为k

例1: 输入:nums=[1,2,3,1],k=3 输出:真

例2: 输入:nums=[1,0,1,1],k=1 输出:真

例3: 输入:nums=[1,2,3,1,2,3],k=2 输出:false

我一直在看我的代码好10分钟,但仍然不明白是什么出了问题。。。我的代码运行,但对于示例1它返回True,对于示例2它返回False,对于示例3它返回True。(示例1为真,示例2为真,示例3为假

有人能帮我确定代码中的问题在哪里吗?这里是Python新手,提前感谢您的帮助

def findDistinct(nums,k):
nums=已排序(nums)#先排序
对于范围内的i(len(nums)):
对于范围(i+1,len(nums))内的j:

如果nums[i]==nums[j]和abs(j-i)返回的
False
太早了。仅仅因为您没有为测试的第一个索引找到重复项,那么not意味着您不会为以后的索引找到重复项:

def findDistinct(nums, k):   
    # sorting makes no sense, you lose the information about the initial indexes
    for i in range(len(nums)):
        for j in range(i+1, len(nums)):  
            if nums[i] == nums[j] and abs(j-i)<=k:
                return True
    return False  # now you have checked all indexes

为什么要对列表进行排序?我想这可能没有必要-但即使我删除了排序,代码仍然不起作用。啊哈,我明白了!这解决了我的问题!非常感谢!
def findDistinct(nums, k):   
    for i, el in enumerate(nums):
        if el in nums[i+1:i+k+1]:
            return True
    return False  # now you have checked all indexes