Ваша функция квадратична c, потому что она должна проверять весь список для каждого элемента в наборе.
Важно, чтобы вы не повторяли набор. Да, это может сработать, но вы показываете, что не знаете преимуществ в сложности времени, которые вы можете получить из набора или изречения в python (или в целом в хеш-таблицах). Но вы также не можете перебирать список, потому что отсутствующий элемент ... отсутствует. Так что вы не найдете его там.
Вместо этого вы строите набор из списка и используете функцию разности. Или лучше, symbric_difference (^) см. https://docs.python.org/3.8/library/stdtypes.html#set
def findMissingNo(arr, s):
d = set(arr) ^ s # symmetric difference
if 1 == len(d):
for item in d:
return item
print (findMissingNo([1,4], {1,4,5}))
5
Я выбрал несколько ярлыков, потому что знал, что мы хотим один предмета, и я знал, в каком контейнере он должен был находиться. Я решил вернуть None, если предмет не был найден, но я не проверял наличие нескольких предметов.