2502. 设计内存分配器 - 力扣(LeetCode)
一:JAVA
Allocator(int n)函数:类构造器
int allocate(int size, int mID)函数:输入,待插入块的大小size,插入内容mid / 输出,插入位置块的起始位置
int freeMemory(int mID)函数:输入,待删除内容块的序号mID / 输出,返回释放的空间大小
class Allocator {
private final int[] memory;
public Allocator(int n) {
memory=new int[n];
}
public int allocate(int size, int mID) {
int free=0;
for (int i = 0; i < memory.length; i++) {
if (memory[i]>0) {
free=0;
continue;
}
free++;
if (free==size) {
Arrays.fill(memory, i-size+1,i+1,mID); // 包左不包右
return i-size+1;
}
}
return -1;
}
public int freeMemory(int mID) {
int sum=0;
for (int i = 0; i < memory.length; i++) {
if (memory[i]==mID) {
sum++;
memory[i]=0;
}
}
return sum;
}
}