Design a Phone Directory which supports the following operations:

get: Provide a number which is not assigned to anyone.
check: Check if a number is available or not.
release: Recycle or release a number.

 public class PhoneDirectory {
Set<Integer> used = new HashSet<>();
Queue<Integer> available = new LinkedList<>();
int max; public PhoneDirectory(int maxNumbers) {
max = maxNumbers;
for (int i = ; i < maxNumbers; i++) {
available.offer(i);
}
} public int get() {
Integer ret = available.poll();
if (ret == null) {
return -;
}
used.add(ret);
return ret;
} public boolean check(int number) {
if (number >= max || number < ) {
return false;
}
return !used.contains(number);
} public void release(int number) {
if (used.remove(number)) {
available.offer(number);
}
}
}

最新文章

  1. android 多线程
  2. Atitit 词法分析器的设计最佳实践说明attilax总结
  3. iScroll4下表单元素聚焦及键盘的异常问题
  4. 十天冲刺---Day8
  5. python常用函数
  6. FancyTree 状态保持
  7. oc-05-对象的创建
  8. noip 2003 传染病控制(历史遗留问题2333)
  9. 使用Jstl异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannot&amp;nbs
  10. 搭建SSH环境之添加所需jar包
  11. VS中,如何将存在于解决方案里,但是没有显示出来的文件(或文件夹)显示到项目中。
  12. Adobe Flash Builder 4.7 新功能详解
  13. modal verbs(一)
  14. SpringCloud的微服务网关:zuul(理论)
  15. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」
  16. select下拉框的探索(&lt;option&gt;&lt;/option&gt;标签中能嵌套使用其它标签吗)
  17. [Swift]LeetCode114. 二叉树展开为链表 | Flatten Binary Tree to Linked List
  18. new Vue 发生了什么
  19. Node.js的缺陷
  20. JUnit4测试报错:class not found XXX

热门文章

  1. Java进阶知识14 Struts2中的S标签
  2. DP(第一版)
  3. delphi将两个Strlist合并,求并集
  4. deepin Linux 日常命令、插件、方法等汇总【更新中】
  5. Python中send和sendall的区别
  6. How to do Deep Learning on Graphs with Graph Convolutional Networks
  7. 8.7 JSON存储数据方式(JavaScript对象表示法)
  8. 什么是跨平台性?原理是什么?JVM
  9. docker安装Elasticsearch Kibana和Cerebro
  10. LeetCode205----同构字符串