Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの配列でk番目に欠落している正の数を見つけるプログラム


正にソートされた厳密に増加する値を持つnumsという配列があり、整数kもあるとします。この配列から欠落しているk番目の正の整数を見つける必要があります。

したがって、入力がnums =[1,2,4,8,12]、k =6のような場合、欠落している数値は[3,5,6,7,9,10,11であるため、出力は10になります。 ]、ここで第6項は10です。

これを解決するには、次の手順に従います-

  • nums:=numsに存在する要素からの新しいセット

  • カウント:=0

  • num:=1

    • numがnumsにない場合は、

      • count:=count + 1

    • countがkと同じ場合、

      • numを返す

    • num:=num + 1

  • numを返す

例(Python)

理解を深めるために、次の実装を見てみましょう-

def solve(nums, k):
   nums = set(nums)
   count = 0
   num = 1
   while count < k:
      if num not in nums:
         count += 1
      if count == k:
         return num
      num += 1
   return num

nums = [1,2,4,8,12]
k = 6
print(solve(nums, k))

入力

[1,2,4,8,12], 6

出力

10

  1. Pythonで1からNまでのすべての欠落している数字を見つけるプログラム

    サイズnのnumsと呼ばれる数値のリストがあり、リスト内のすべての数値が区間[1、n]に存在するとします。一部の要素は、2回表示され、他の要素は1回だけ表示される場合があります。リストにないように、[1、n]からすべての番号を見つける必要があります。昇順でソートされた番号を返す必要があります。線形の時間と一定のスペースを必要とする解決策を見つけようとする必要があります。 したがって、入力が[4、4、2、2、6、6]の場合、出力は[1、3、5]になります。 これを解決するには、次の手順に従います- arr:=サイズnums + 1の配列で、0で埋めます numsの各iについて、 ar

  2. Pythonで一意の配列の連続する間隔を見つけるプログラム

    numsと呼ばれる一意の番号のリストがあるとします。並べ替えられた数値の2D行列を見つける必要があります。各リストは、数値が連続している数値を要約した包括的区間を表します。 したがって、入力がnums =[10、11、12、15、16、17、28、30]のような場合、出力は[[10、12]、[15、17]、[28、28]になります。 、[30、30]]、リスト[10から12]のように、[15から17]は隣接しており、28と30があり、[28から28]と[30から30]として表されます。 これを解決するために、次の手順に従います- リスト番号を並べ替える numsの最後に無限大を