Я начинающий кодировщик Python (самообучаюсь онлайн), я начал решать проблемы с кодированием на hackerrank, но мне трудно понять, почему мой код дает ошибку тайм-аута. Мне не хватает руководства. Пожалуйста, объясните мне, что я должен узнать, чтобы понять, как быстрее запускать коды.
пример проблемы, которую я закодировал -
У нас есть список слов в журнале и список слов, необходимый для заметок. мы должны проверить, есть ли в журнале все слова, которые нам нужны, чтобы сделать заметку. выведите «Да», если доступны все слова, выведите «Нет», если нет.
mag = 'ive got a lovely bunch of coconuts'.split()
note = 'ive got some coconuts'.split()
я определил две функции -
ниже функция дает тайм-аут для большого списка слов, и я не понимаю, почему. эта функция просто проверяет, есть ли каждое требуемое слово в журнале, и я вытаскиваю уже использованное слово.
функция 1
def checkMagazine(magazine, note):
ans = 'Yes'
for i in note:
if i not in magazine:
ans = 'No'
break
else:
magazine.pop(magazine.index(i))
print(ans)
Функция 2 (работает очень быстро и проходит все тесты (я следил за чьим-то кодом))
эта функция создает словарь, перебирает каждое слово в журнале и сохраняет количество слов в словаре. и снова перебираем слова в словаре, сравниваем с нужными словами, а затем выдаем результат, и все же это быстрее, чем прямая проверка слов в двух списках.
def checkMagazine2(magazine, note):
ans = 'Yes'
d = defaultdict(int)
for word in magazine:
d[word]+=1
for word in note:
if d[word] == 0:
ans = 'No'
break
else:
d[word]-=1
print(ans)
в большинстве кодов, которые я пытаюсь решить, я сталкиваюсь с ошибками тайм-аута в огромном списке. я пытаюсь продолжать программировать, и после стольких неудач я теряю мотивацию и трачу свое время на онлайн-игры. Мне действительно нужно найти работу в ближайшее время, пожалуйста, кто-нибудь направьте меня.