私は別のインタビューの質問をしています。Python:実行時間を改善する:total_untimesが正確な飛行長と等しい2つのmovie_lengthを選択する
私は、合計ランタイムが正確な飛行時間に等しい2つの映画を選択するための機能を構築しています。 整数のflight_length(分)と整数のリストmovie_lengths(分)を引数にとり、movie_lengthの2つの数値の和がflight_lengthに等しいかどうかを示すブール値を返します。
まず最初に、2つのループ(外側はfirst_movie_lengthを選択し、内側はsecond_movie_lengthを選択)を実行すると考えました。それは私たちにO(n^2)の実行時間を与えますO(n2)
しかし、私たちはもっとうまくいく可能性はありますか?
def can_two_movies_fill_flight(movie_lengths, flight_length):
# movie lengths we've seen so far
movie_lengths_seen = set()
for first_movie_length in movie_lengths:
matching_second_movie_length = flight_length - first_movie_length
if matching_second_movie_length in movie_lengths_seen:
return True
movie_lengths_seen.add(first_movie_length)
# we never found a match, so return False
return False
私は、このソリューションは私にO(n)の時間を与えると思うし、O(n)はO(n)のスペース:
は、私は、次の解決策を持っています。
ハッシュマップを使用することは可能でしょうか?
さらに最適化されたソリューションはありますか? – DataEngineer
私は参照してください。私たちはsetを使って解を最適化できるようです – DataEngineer