WedX - журнал о программировании и компьютерных науках

Почему мои коды дают ошибку тайм-аута при проблемах с хакерским рейтингом, тайм-аут при вводе огромного списка

Я начинающий кодировщик 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)

в большинстве кодов, которые я пытаюсь решить, я сталкиваюсь с ошибками тайм-аута в огромном списке. я пытаюсь продолжать программировать, и после стольких неудач я теряю мотивацию и трачу свое время на онлайн-игры. Мне действительно нужно найти работу в ближайшее время, пожалуйста, кто-нибудь направьте меня.

13.02.2019

Ответы:


1

Вы получаете TLE, потому что поиск элементов в lists занимает O(n) времени. Но второе решение быстрое, потому что оно использует dictionary и требует постоянного времени для поиска времени, т.е. O(1).

13.02.2019
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]