Вот решение Python проблемы «разреженных массивов» на HackerRank:
def matchingStrings(strings, queries):
string_counts = {}
for string in strings:
if string in string_counts:
string_counts[string] += 1
else:
string_counts[string] = 1
results = []
for query in queries:
if query in string_counts:
results.append(string_counts[query])
else:
results.append(0)
return results
В этом решении мы определяем функцию под названием matchingStrings, которая принимает два параметра: stringsи queries. strings— это список строк, представляющих входные строки, а queries— это список строк, представляющих запросы, которые нам нужно посчитать.
Мы создаем словарь под названием string_countsдля хранения количества каждой строки во входном списке. Мы перебираем список stringsи соответствующим образом обновляем счетчик в словаре string_counts.
Далее мы перебираем список запросов. Для каждого запроса, если он существует в словаре string_counts, мы добавляем его счетчик в список results. В противном случае мы добавляем 0.
Наконец, мы возвращаем список results, содержащий счетчики для каждого запроса.
Временная сложность этого решения равна O(n + m), где n — длина списка strings, а m — длина списка queries.