コーディングテスト練習サイトCodilityの「FrogRiverOne」という問題で、書いたコードのパフォーマンスが悪かったのですが、どのように改善すれば良いのでしょうか。

パフォーマンスの良いコードの書き方がよくわかっていないので、学べるサイトや教材などももしおすすめのものがあれば教えていただきたいです。

FrogRiverOne coding task - Learn to Code - Codility
上記のFrogRiverOneについて日本語で書かれた記事

書いたコード

python

def solution(X, A):
    result = 0
    tmp = 0
    #iは配列番号
    for i in range(0, len(A)):
        #jは1からXまでの数
        for j in range(1, X+1):
            #そもそもjが要素にない場合
            if j not in A:
                result = -1
                return result
                break

            #もし配列番号iの要素がjならtmpにその要素番号を格納
            elif A[i] == j:
                if tmp < A.index(j):
                    tmp = A.index(j)
    result = tmp
    return result

パフォーマンス結果
Detected time complexity:O(N ** 2)