Lesson4のPermCheckは配列Aに対して1~N(Nは任意)の範囲の値が欠落せず登場しているかを判定するというものです。
例えば長さ3の配列A,Bに対して
A = [2,1,3]は1~3の数字が欠落せず並んでいるが
B = [2,1,4]は1~4の数字のうち3が欠落していることがわかる。
このような数字が欠落しているかを判定するプログラムを今回は書いていきます。
アルゴリズムは以下の通りです。
1 配列を小さい順にソーティングしていく。
2 ソートし終わった配列に対して、配列の0番目から順番に1,2,3…と並んでいるかどうか確認していき、並んでいる場合は1を、途中で数字が飛んでいる場合は欠けているということなので0を返せばよい。
コードは以下の通りです。
def solution(A):
A = sorted(A)
len_A = len(A)
i = 0
while i < len_A:
if i+1 == A[i]:
i += 1
else:
break
if i == len_A:
return 1
else:
return 0
さて結果は。。。。?
やったー、100%です!