Untitled
unknown
python
a year ago
1.5 kB
7
Indexable
class Solution:
def leastInterval(self, tasks: List[str], n: int) -> int:
next_index = {key: 0 for key in tasks}
task_count = {}
for task in tasks:
task_count[task] = task_count.get(task, 0) + 1
more_than_1 = False
for task in tasks:
if task_count[task] > 1:
more_than_1 = True
if not more_than_1:
return len(task) + 1
sorted_tasks = []
tasks_keys_sorted = sorted(task_count, key=task_count.get, reverse=True)
for task in tasks_keys_sorted:
sorted_tasks.extend([task] * task_count[task])
tasks = sorted_tasks
print(sorted_tasks)
# print(task_count)
current_index = 0
for task in tasks:
print(current_index)
print(task)
if task_count[task] == 1 and next_index[task] <= current_index:
current_index += 1
if task_count[task] > 1:
if next_index[task] is 0:
next_index[task] = (current_index + n + 1)
current_index += 1
else:
next_index[task] = next_index[task] + n + 1
print(next_index[task])
task_count[task] -= 1
print("\n")
print(next_index)
return next_index[max(next_index, key=next_index.get)] + 1
Editor is loading...
Leave a Comment