[Codility] FrogRiverOne


def solution(X, A):
    check = X * [False]
    sum = 0

    for i, a in enumerate(A):
        if check[a-1] == False:
        	sum +=1
        	check[a-1] = True
        if sum == X:
            return i
    return -1
  • sum()を使用するよりも、1カウント増加するごとに時間的複雑さを低減することができる.
  • アレイの空間サイズ
  • を考慮する.
    def solution(X, A):
        check = set()
        for i, a in enumerate(A):
            check.add(a)
            if len(check) == X:
                return i
        return -1
  • listをsetに変換するよりも、set追加要素を指定することで時間の複雑さを低減できます.