3.0 KiB
在 Python 中查找缺失和重复的元素[简单的一步一步]
原文:https://www.askpython.com/python/examples/missing-and-repeating-elements
嘿伙计们!因此,在本教程中,我们将理解这个简单的问题,即在一系列数字中寻找缺失和重复的元素。让我们通过一个例子来理解这个问题,考虑下面给出的 n = 6 的数字列表。
| one | Two | four | five | five | six |
缺失的数字是 1,2,3…中不存在的数字。n,重复的数字是在元素中出现两次的数字。
在上面提到的例子中,缺失的数字将是 3,重复的数字将是 5。实际结果应该是这样的:1 2 3 4 5 6 没有重复和遗漏的数字。
也读作: Python 列表 vs 数组
手动查找缺失和重复的元素
现在,手动方法是遍历列表一次,并检查每个数字的计数。
如果任何数字的计数等于 2*n,那么我们找到重复的数字,然后遍历元素检查每个数字的出现:1、2、3 等等。
如果这些数字中的任何一个都不存在,那么将该数字作为缺失的数字返回。
这种方法的问题是这种方法很慢,对于一个简单的问题引入了太多的步骤,并且可以用一种更好的方式来完成。
寻找缺失和重复元素的更好方法
因此,我们将创建一个额外的数组,它将考虑一个元素是否被访问。数组的大小与 n 的值相同。
最初,所有的值都等于 0(不可见),当一个元素出现在数组中时,它在最终数组中的值被设置为 1(可见)。
这一直持续到数组的末尾。我们必须计算两件事:重复的数字和缺失的数字。
如果在任何时候,其值被设置的数字已经被设置,那么这意味着该数字是重复的数字。
现在,为了计算丢失的数字,我们将最后一次遍历最终数组,并检查最终数组中哪个数字的值仍然是 0。这意味着这个数字从未出现过,因此它是数组中缺失的数字。
我们将以包含两个值的列表的形式返回这两个值:第一个是重复的数字,第二个是缺失的数字。
用 python 实现
我希望你清楚这一点。现在让我们看一下查找缺失和重复元素的代码实现,以及代码的示例输出。
def find_miss_repeat(arr,n):
final_array = [0 for i in range(n)]
l = [0,0]
for i in arr:
if(final_array[i-1]==1):
l[0] = i
else:
final_array[i-1] = 1
for i in range(len(final_array)):
if(final_array[i]==0):
l[1] = i+1
return l
x = find_miss_repeat([1,2,4,5,5,6],6)
print("Repeating Number: ",x[0])
print("Missing Number: ",x[1])
代码的输出如下所示。
Repeating Number: 5
Missing Number: 3
结论
我希望你清楚这个概念。你可以用简单和快速的方法自己尝试一下。同样的逻辑也适用于所有的编程语言。
感谢您阅读教程!编码快乐!😇