搜索重复算法说明:为什么这样做有效?
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 行:打印函数将通过打印那个单词来执行
重复。
我一直在编写面试问题的代码,以深入了解数据结构和算法(作为正在恢复的复制粘贴者)。最近,我正在研究搜索算法问题并解决了以下问题:在数组中搜索重复项?我用来搜索数组并查找重复项的代码是:
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 行:打印函数将通过打印那个单词来执行 重复。