在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的数组
对于0到A的范围内的i,执行
如果A的tempmod大小不为零,则
除此以外,
temp_arr[A的温度mod大小-1]:=-1
temp_arr[(A的温度mod大小)+A的大小-1]:=-1
A[temp-1]:=A[temp-1]*(-1)
temp:=|A[i]|
如果temp<=A的大小,则
否则,当temp>A的大小时,则
对于0到A的范围内的i,执行
显示我+1
如果A[i]>0,则
对于范围在0到temp_arr范围内的我,执行
显示大小A+i+1
如果temp_arr[i]>=0,则
示例
让我们看下面的实现以更好地理解-
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