文章目录
- 1、题目描述
- 2、解题思路
- 3、解题代码
1、题目描述
2、解题思路
题目的构造器是输入一个 int 类型数字,则电话号码指的是:0、1、…、n-1 这些数字。
定义一个布尔类型的数组 phone[],容量为电话号码数量,这个数组的索引就是电话号码,值为 true 表示可未被使用,值为 false 表示已被使用;
1、get: 遍历 phone[],返回第一个值为 true 的索引;
2、check:先 phone[i] = false,再返回 phone[i];
3、release:phone[i] = true。
3、解题代码
class PhoneDirectory {
/** Initialize your data structure here
@param maxNumbers - The maximum numbers that can be stored in the phone directory. */
private boolean[] phone;
private int size;
public PhoneDirectory(int maxNumbers) {
this.size = maxNumbers;
phone = new boolean[maxNumbers];
Arrays.fill(phone, true); // true 表示可以使用
}
/**
* 分配给用户一个未被使用的电话号码,获取失败请返回 -1.
*/
public int get() {
for (int i = 0; i < size; i++) {
if (phone[i]) {
phone[i] = false;
return i;
}
}
return -1;
}
/**
* 检查指定的电话号码是否被使用.
*/
public boolean check(int number) {
return phone[number];
}
/**
* 释放掉一个电话号码,使其能够重新被分配.
*/
public void release(int number) {
phone[number] = true;
}
}
/**
* Your PhoneDirectory object will be instantiated and called as such:
* PhoneDirectory obj = new PhoneDirectory(maxNumbers);
* int param_1 = obj.get();
* boolean param_2 = obj.check(number);
* obj.release(number);
*/