問題
今回の問題はリストの中の要素を検索し、重複しているものがあれば、そのタイミングでTrue
を返すアルゴリズム。重複する要素がなければFalse
を返す。
input: [1,2,3,1] output: true
実装
方針としては、ディクショナリーに値を格納していき、要素をループで回しながら、判定を繰り返すという方法にします。
from typing import List
def contains_duplicate(numbers: List[int]) -> bool:
len_numbers = len(numbers)
if len_numbers <= 1:
return False
cache = {}
for num in numbers:
if num in cache:
return True
cache[num] = True
return False
if __name__ == '__main__':
numbers = [1,2,3,4,0,5,6,7,1]
print(numbers)
print(contains_duplicate(numbers))
numbers = [1,2,3,4,0,5,6,7,100]
print(numbers)
print(contains_duplicate(numbers))
[1, 2, 3, 4, 0, 5, 6, 7, 1]
True
[1, 2, 3, 4, 0, 5, 6, 7, 100]
False