在 Python 中查找包含 1 到 N 元素的数组中四个缺失的数字
假设我们有一个包含不同数字的数组,每个数字都在 [1, N] 范围内,数组大小为 (N-4),并且没有单个元素重复。因此,我们可以理解数组中缺少四个数字(从 1 到 N)。我们必须以排序方式找到这 4 个缺失的数字。
因此,如果输入类似于 A =[2, 8, 4, 13, 6, 11, 9, 5, 10],则输出将为 [1, 3, 7, 12]
为了解决这个问题,我们将遵循以下步骤 -
temp_arr := 一个大小为 4 且所有元素都为 0 的数组
对于 i 从 0 到 A 的大小,执行以下操作
temp := |A[i]|
如果 temp <= A 的大小,则
A[temp - 1] := A[temp - 1] *(-1)
否则,当 temp > A 的大小时,
如果 temp 对 A 的大小取模不为零,则
temp_arr[temp 对 A 的大小取模 - 1] := -1
否则,
temp_arr[(temp 对 A 的大小取模) + A 的大小 - 1] := -1
对于 i 从 0 到 A 的大小,执行以下操作
如果 A[i] > 0,则
显示 i + 1
对于 i 从 0 到 temp_arr 的大小,执行以下操作
如果 temp_arr[i] >= 0,则
显示 A 的大小 + i + 1
示例
让我们看看以下实现以获得更好的理解 -
def find_missing_nums(A) : temp_arr = [0]*4 for i in range(0,len(A)) : temp = abs(A[i]) if (temp <= len(A)) : A[temp - 1] = A[temp - 1] * (-1) elif (temp > len(A)) : if (temp % len(A)) : temp_arr[temp % len(A) - 1] = -1 else : temp_arr[(temp % len(A)) +len(A) - 1] = -1 for i in range(0, len(A) ) : if (A[i] > 0) : print((i + 1) , end=" ") for i in range(0, len(temp_arr)) : if (temp_arr[i] >= 0) : print((len(A) + i + 1) , end=" ") A = [2, 8, 4, 13, 6, 11, 9, 5, 10] find_missing_nums(A)
输入
[2, 8, 4, 13, 6, 11, 9, 5, 10]
输出
1 3 7 12
广告