Leetcode # 2593. Find Score of an Array After Marking All Elements
Problem
https://leetcode.com/problems/find-score-of-an-array-after-marking-all-elements
Solution: Sorting
Time Complexity: O(len(nums) * log(len(nums)))
Space Complexity: O(len(nums))
(The input and output generally do not count towards the space complexity.)
class Solution:
def findScore(self, nums: List[int]) -> int:
nums = [[n, i] for i, n in enumerate(nums)]
nums.sort(key=lambda e: (e[0], e[1]))
marked, score = set(), 0
for n, i in nums:
if i in marked: continue
score += n
marked.add(i)
if i - 1 >= 0: marked.add(i - 1)
if i + 1 < len(nums): marked.add(i + 1)
return score
Solution: Priority Queue (heapq)
Time Complexity: O(len(nums) * log(len(nums)))
Space Complexity: O(len(nums))
(The input and output generally do not count towards the space complexity.)
class Solution:
def findScore(self, nums: List[int]) -> int:
pq = []
for i, n in enumerate(nums):
heappush(pq, (n, i)) # Max Time Complexity: O(log(len(nums)))
marked, score = set(), 0
while pq:
n, i = heappop(pq) # Max Time Complexity: O(log(len(nums)))
if i in marked: continue
print(n, i)
score += n
marked.add(i)
if i - 1 >= 0: marked.add(i - 1)
if i + 1 < len(nums): marked.add(i + 1)
return score
Last Updated on 2024/12/15 by A1go