搜索重复算法说明:为什么这样做有效?

Searching for Duplicates Algorithm Explanation: Why Does This Work?

我一直在编写面试问题的代码,以深入了解数据结构和算法(作为正在恢复的复制粘贴者)。最近,我正在研究搜索算法问题并解决了以下问题:在数组中搜索重复项?我用来搜索数组并查找重复项的代码是:

arr=[1, 2, 3, 4, 3];

for i in range(0, len(arr)):
  for j in range(i+1, len(arr)):
    if arr[i]==arr[j]:
      print(arr[j])

然后返回

3

我的问题是:为什么这条线

for j in range (i+1, len(arr))

工作?为什么我不能使用其他范围,例如

for j in range (0, len(arr))

for j in range (i, len(arr))

为什么我使用的代码有效,而我试验过的任何其他代码却给出奇怪的结果?我能够得到

for j in range (i+1, len(arr))

通过反复试验,但并不真正理解为什么代码可以正常工作。谢谢!

让我们逐行执行代码。

  • 第 1 行:是引用 arr 变量的整数列表。

  • 第 2 行:从第一个元素开始逐个遍历 array/list(arr)。 所以当 i = 0 时,这是第一个单词。

  • 第 3 行:遍历列表 (arr),但从第二个索引 (i+1) 开始。所以现在 j = 1。请记住我们正在寻找重复项,因此我们需要一次选择一项并与列表中的其余项进行比较。

  • 第 4 行:现在如果在任何时候,索引处的 i 是一个词,与 j 相同,j 也是下一个索引处的词,

    第 5 行:打印函数将通过打印那个单词来执行 重复。