Skip to content

Commit a108641

Browse files
committed
Time: 299 ms (100%), Space: 33.2 MB (100%) - LeetHub
1 parent 7979f25 commit a108641

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# time complexity: O(nlogn)
2+
# space complexity: O(n)
3+
from typing import List
4+
import bisect
5+
6+
7+
class Solution:
8+
def totalScore(self, hp: int, damage: List[int], requirement: List[int]) -> int:
9+
n = len(damage)
10+
prefix = [0] * (n + 1)
11+
for i in range(1, n + 1):
12+
prefix[i] = prefix[i - 1] + damage[i - 1]
13+
total = 0
14+
for i in range(1, n + 1):
15+
need = prefix[i] - (hp - requirement[i - 1])
16+
k = bisect.bisect_left(prefix, need)
17+
if k <= i - 1:
18+
total += (i - k)
19+
return total
20+
21+
22+
hp = 11
23+
damage = [3, 6, 7]
24+
requirement = [4, 2, 5]
25+
print(Solution().totalScore(hp, damage, requirement))
26+
hp = 2
27+
damage = [10000, 1]
28+
requirement = [1, 1]
29+
print(Solution().totalScore(hp, damage, requirement))

0 commit comments

Comments
 (0)