有一个简易内存池,内存按照大小粒度分类,每个粒度有若干个可用内存资源,用户会进行一系列内存申请,需要按需分配内存池中的资源返回申请结果成功失败列表。
分配规则如下:
题目要求实现一个简易的内存池管理器。输入包含两行,第一行为内存池资源列表,格式为“粒度大小:数量”,不同粒度用逗号分隔;第二行为用户的内存申请列表,申请的内存大小用逗号分隔。程序需要按照先后顺序处理内存申请,优先分配粒度最小且大于等于申请量的内存,若有可用内存则分配,成功则返回true
,否则返回false
。输出为一个布尔列表,表示每次申请是否成功。
将所有资源按照大小和数量存起来并按照大小升序排列,对于每一个申请优先找第一个大于等于它的资源可以做到最优,二分查找即可