Sobes.tech

Оценете времевата и пространствената сложност на алгоритъма спрямо дължината на текста n и размера на азбуката m.

117

```python # a = "abc", не празен, уникален (m) # s = "dfaga[bfkac]ebf" => "aceb" (n) O(n) # s = "cfaafb" => "cfaafb" # s = "affb" => "" from collections import Counter def min_s(a: str, s: str) -> str: need = set(a) window = Counter() res = "" c = 0 left = 0 best_len = float('inf') for right, char in enumerate(s): if char in need and \ window[char] += 1 if window[char]: c += 1 ```

116

from file import ATM, SDK import pytest BILLS = {5000, 1000, 500, 100, 50} @pytest.mark.parametrize( "bills_count_const,expected", [ ({5000: 0, 1000: 0, 500: 0, 100: 0, 50: 0}, False), ({5000: 100, 1000: 100, 500: 100, 100: 100, 50: 100}, True) ] ) def test_false(bills_count_const, expected): atm = ATM(SDK()) atm.bills_count = bills_count_const amount = 1000 res = atm.withdraw(amount) assert res == expected return

116

from collections import Counter def min_s(a: str, s: str) -> str: need = set(a) window = Counter() res = "" c = 0 left = 0 best_len = float('inf') for right, char in enumerate(s): if char in need: window[char] += 1 if window[char] == 1: c += 1 while c == len(need): if right - left + 1 < best_len: res = s[left:right + 1] best_len = right - left + 1 if s[left] in need: window[s[left]] -= 1 if window[s[left]] == 0: c -= 1 left += 1 return res

116

Имаш ли опит в разработването на програми с многопоточност или асинхронност?

115

```python from collections import Counter def min_s(a: str, s: str) -> str: need = set(a) window = Counter() res = "" c = 0 left = 0 best_len = float('inf') for right, char in enumerate(s): if char in need and \ window[char] += 1 if window[char]: c += 1 while c == len(need): if right - left + 1< best_len: res = s[left:right + 1] best_len = right - left + 1 if s[left] in need: window[s[left]] -= 1 if window[s[left]] == 0: c -= 1 left += 1 return res ``` Задачата е да се реализира функция `min_s(a: str, s: str) -> str`, която намира най-малката подниз в `s`, която съдържа всички символи от низ `a`.

115

Как да разберете дали можете да изхвърлите конкретен символ (например символ A), при стесняване на прозореца отляво, без да загубите покритието на азбуката?

112

Каква структура от данни може да се използва за представяне на граф в тази задача?

111

""" Даден е набор от двойки градове: - между всяка двойка градове служител е извършил директен полет; - информацията за посоката на полета е изгубена; - също така е изгубен редът на полетите. Знае се, че всички полети принадлежат на едно пътуване. Всеки следващ полет започва от града, в който е завършил предишният. Нито един град не е посещаван два пъти от служителя. Градът на началото на пътуването също е различен от крайния. Изведете градовете в реда на маршрута. Има два възможни отговора, всеки е подходящ. Примери: [("Москва", "Белград")] -> ["Москва", "Белград"] [(("Москва", "Белград"), ("Москва", "Ереван")) -> ["Ереван", "Москва", "Белград"] """ Flight = tuple[str, str] def get_route(flights: list[Flight]) -> list[str]: ...

111

Какъв формат на работа разглеждате?

111

Каква е сега крайната сложност на алгоритъма след премахването на квадратичната операция? Вярно ли е, че размерът на азбуката m никак не влияе на времевата сложност?

110

# a = "abc", не празен, уникален # s = "dfagabfkacebf" => "aceb" # s = ""

110

Какви бази данни или други хранилища използваш в работата?

109

Какъв е максималният брой заявки в секунда, които е обработвал най-натовареният сервис?

108

Дадена е последователност от цели числа. Трябва да намерите минимално възможното произведение на двойка елементи от последователността (двойка - два произволни елемента, не непременно последователни). Например, за последователността 9 4 2 5 3, отговорът ще бъде 6.

105

Преди това разглеждал ли си свободни работни места в [компания], свързвал ли си се с рекрутъри?

98
/5