0748b90eda5c2011f4145b1d38be97161f45acb04859e3a4c439f6115a504a2bd11d9eca27a5abdf890692999822fb0ea1fa914684bb5cd4f2647b9e353c83 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. export declare class NumberAllocator {
  2. /**
  3. * NumberAllocator constructor.
  4. * The all numbers are set to vacant status.
  5. * Time Complexity O(1)
  6. * @constructor
  7. * @param {number} min - The maximum number of allocatable. The number must be integer.
  8. * @param {number} maxh - The minimum number of allocatable. The number must be integer.
  9. */
  10. constructor (min: number, max: number)
  11. /**
  12. * Get the first vacant number. The status of the number is not updated.
  13. * Time Complexity O(1)
  14. * @return {number} - The first vacant number. If all numbers are occupied, return null.
  15. * When alloc() is called then the same value will be allocated.
  16. */
  17. public firstVacant (): number | null
  18. /**
  19. * Allocate the first vacant number. The number become occupied status.
  20. * Time Complexity O(1)
  21. * @return {number} - The first vacant number. If all numbers are occupied, return null.
  22. */
  23. public alloc (): number | null
  24. /**
  25. * Use the number. The number become occupied status.
  26. * If the number has already been occupied, then return false.
  27. * Time Complexity O(logN) : N is the number of intervals (not numbers)
  28. * @param {number} num - The number to request use.
  29. * @return {Boolean} - If `num` was not occupied, then return true, otherwise return false.
  30. */
  31. public use (num: number): Boolean
  32. /**
  33. * Deallocate the number. The number become vacant status.
  34. * Time Complexity O(logN) : N is the number of intervals (not numbers)
  35. * @param {number} num - The number to deallocate. The number must be occupied status.
  36. * In other words, the number must be allocated by alloc() or occupied be use().
  37. */
  38. public free (num: number): void
  39. /**
  40. * Clear all occupied numbers.
  41. * The all numbers are set to vacant status.
  42. * Time Complexity O(1)
  43. */
  44. public clear (): void
  45. /**
  46. * Get the number of intervals. Interval is internal structure of this library.
  47. * This function is for debugging.
  48. * Time Complexity O(1)
  49. * @return {number} - The number of intervals.
  50. */
  51. public intervalCount (): number
  52. /**
  53. * Dump the internal structor of the library.
  54. * This function is for debugging.
  55. * Time Complexity O(N) : N is the number of intervals (not numbers)
  56. */
  57. dump (): void
  58. }