在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的temp mod大小不为零,则

    • 除此以外,

    • 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
    猜你喜欢