Skip to content

Commit d905acf

Browse files
authored
feat: [LeetCode #649] Dota2 Seante (#36)
* feat: [LeetCode #649] Dota2 Seante Тип: Queue Сложность: medium Временная сложность: O(n) Пространственная сложность: O(n) - Ссылка: https://leetcode.com/problems/decode-string/
1 parent 4dd830e commit d905acf

3 files changed

Lines changed: 37 additions & 0 deletions

File tree

src/queue/dota2_senate/__init__.py

Whitespace-only changes.

src/queue/dota2_senate/solution.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from collections import deque
2+
3+
4+
class Solution:
5+
def predictPartyVictory(self, senate: str) -> str:
6+
radiant_queue = deque()
7+
dire_queue = deque()
8+
9+
length = len(senate)
10+
11+
for i in range(length):
12+
if senate[i] == "R":
13+
radiant_queue.append(i)
14+
else:
15+
dire_queue.append(i)
16+
17+
while radiant_queue and dire_queue:
18+
radiant = radiant_queue.popleft()
19+
dire = dire_queue.popleft()
20+
21+
if radiant < dire:
22+
radiant_queue.append(radiant + length)
23+
else:
24+
dire_queue.append(dire + length)
25+
26+
return "Radiant" if radiant_queue else "Dire"

tests/test_dota2_seante.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import pytest
2+
from src.queue.dota2_senate.solution import Solution
3+
4+
5+
@pytest.mark.parametrize(
6+
"senate, expected",
7+
[("RD", "Radiant"), ("RDD", "Dire")],
8+
)
9+
def test_predict_party_victory(senate, expected):
10+
solution = Solution()
11+
assert solution.predictPartyVictory(senate) == expected

0 commit comments

Comments
 (0)