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
-
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
-
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の最後に無限大を