ynnh 发表于 2023-12-17 14:21:17

存在重复元素

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums == nums 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

代码:
bool containsNearbyDuplicate(int* nums, int numsSize, int k) {
    for (int i = 0; i < numsSize; i++)
    {
      for (int j = i + 1; j < numsSize; j++)
      {
            if (nums == nums && abs(i - j) <= k)
            {
                return true;
            }
      }
    }
   
    return false;
}
请问我的代码有哪些问题

FishC 发表于 2023-12-17 14:21:31

可以使用哈希表来解决这个问题。

我们可以遍历数组 nums,并将每个元素及其索引存储在哈希表中。对于每个元素 num,我们在哈希表中查找是否存在另一个索引 j,满足 nums == nums 且 abs(i - j) <= k。

如果找到了满足条件的索引 j,则返回 True。如果遍历完整个数组后都没有找到满足条件的索引 j,则返回 False。

下面是代码实现:

def containsNearbyDuplicate(nums, k):
    num_dict = {}# 创建一个空的哈希表
    for i in range(len(nums)):
      if nums in num_dict and abs(i - num_dict]) <= k:
            return True# 找到满足条件的索引 j
      num_dict] = i# 将当前元素及其索引存储在哈希表中
    return False# 遍历完整个数组后都没有找到满足条件的索引 j

# 测试
nums =
k = 3
print(containsNearbyDuplicate(nums, k))# 输出 True

nums =
k = 1
print(containsNearbyDuplicate(nums, k))# 输出 True

nums =
k = 2
print(containsNearbyDuplicate(nums, k))# 输出 False

希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

ynnh 发表于 2023-12-17 15:05:09

FishC 发表于 2023-12-17 14:21
可以使用哈希表来解决这个问题。

我们可以遍历数组 nums,并将每个元素及其索引存储在哈希表中。对于每个 ...

ai退化了?

FishC 发表于 2023-12-17 15:05:28

ynnh 发表于 2023-12-17 15:05
ai退化了?

非常抱歉给您带来困惑,我会尽快修正。

我们来解决一个存在重复元素的问题。假设给定一个整数列表 nums,我们需要判断其中是否存在重复的元素。

一种简单的方法是使用集合(Set)数据结构。集合中的元素不允许重复,因此我们可以遍历列表 nums,将每个元素添加到集合中。如果添加过程中发现元素已经存在于集合中,则说明存在重复元素。

下面是一个简单的示例代码:

def has_duplicate(nums):
    num_set = set()
    for num in nums:
      if num in num_set:
            return True
      num_set.add(num)
    return False

# 测试代码
nums1 =
print(has_duplicate(nums1))# False

nums2 =
print(has_duplicate(nums2))# True

这个方法的时间复杂度为 O(n),其中 n 是列表中元素的个数。我们只需要遍历一次列表,并在集合中查找元素的操作具有 O(1) 的平均时间复杂度,因此总体时间复杂度为 O(n)。

希望这次回答能够帮到您,如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

渔村暮火 发表于 2023-12-19 10:00:44

你的代码我并没有发先有什么问题,我猜测你是理解的两个相同值之间的间隔要>k,但程序是两个相同值之间的间隔<=k,而导致你觉得程序有问题

zhangjinxuan 发表于 2023-12-19 12:25:21

nums 的下标是从哪里开始的,搞对了吗。

然后 abs 在 math 库里面,#include 了吗。
页: [1]
查看完整版本: 存在重复元素