fork download
  1. class Allocator:
  2. def __init__(self, n: int):
  3. self.arr = [None] * n
  4.  
  5. def allocate(self, size: int, mID: int) -> int:
  6. index_arr = [-1]
  7. for i in range(len(self.arr)):
  8. if self.arr[i] is not None:
  9. index_arr.append(i)
  10. index_arr.append(len(self.arr))
  11.  
  12. start = -1
  13. for k in range(len(index_arr) - 1):
  14. free_len = index_arr[k + 1] - index_arr[k] - 1
  15. if free_len >= size:
  16. start = index_arr[k] + 1
  17. break
  18.  
  19. if start == -1:
  20. return -1
  21.  
  22. for x in range(start, start + size):
  23. self.arr[x] = mID
  24. return start
  25.  
  26. def freeMemory(self, mID: int) -> int:
  27. cnt = 0
  28. for i, val in enumerate(self.arr):
  29. if val == mID:
  30. self.arr[i] = None
  31. cnt += 1
  32. return cnt
Success #stdin #stdout 0.13s 14196KB
stdin
Standard input is empty
stdout
Standard output is empty