文章目录

  • 1. 题目
  • 2. 解题

1. 题目

设计一个电话目录管理系统,让它支持以下功能:

  • get: 分配给用户一个未被使用的电话号码,获取失败请返回 -1
  • check: 检查指定的电话号码是否被使用
  • release: 释放掉一个电话号码,使其能够重新被分配
示例:
// 初始化电话目录,包括 3 个电话号码:0,1 和 2。
PhoneDirectory directory = new PhoneDirectory(3);// 可以返回任意未分配的号码,这里我们假设它返回 0。
directory.get();// 假设,函数返回 1。
directory.get();// 号码 2 未分配,所以返回为 true。
directory.check(2);// 返回 2,分配后,只剩一个号码未被分配。
directory.get();// 此时,号码 2 已经被分配,所以返回 false。
directory.check(2);// 释放号码 2,将该号码变回未分配状态。
directory.release(2);// 号码 2 现在是未分配状态,所以返回 true。
directory.check(2);提示:
1 <= maxNumbers <= 10^4
0 <= number < maxNumbers
调用方法的总数处于区间 [0 - 20000] 之内

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/design-phone-directory
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 两个哈希set,一个存储没有使用的,一个存储使用过的,来回传递号码
class PhoneDirectory {unordered_set<int> unused, used;int tel;
public:/** Initialize your data structure here@param maxNumbers - The maximum numbers that can be stored in the phone directory. */PhoneDirectory(int maxNumbers) {for(int i = 0; i < maxNumbers; ++i)unused.insert(i);}/** Provide a number which is not assigned to anyone.@return - Return an available number. Return -1 if none is available. */int get() {if(unused.empty()) return -1;tel = *unused.begin();unused.erase(*unused.begin());used.insert(tel);return tel;}/** Check if a number is available or not. */bool check(int number) {return unused.find(number) != unused.end();//没有用过}/** Recycle or release a number. */void release(int number) {used.erase(number);unused.insert(number);}
};

104 ms 23.3 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 379. 电话目录管理系统(哈希set)相关推荐

  1. leetcode刷题目录总结

    题目 题目 技巧 相似的题目 其他 1. 无序数组中找出目标为target的两个数 先定义下一个数,然后找两位的数是否存在 高频, 大厂刷题班, 第27节 2.逆序链表两数相加 链表.各位加法 高频, ...

  2. LeetCode 136. Single Number【哈希表/位运算/数学】简单

    本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12.由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止:由于LeetCode还在不断地创建新 ...

  3. LeetCode MySQL解题目录

    已完成的 LeetCode MySQL 数据库题目.点击查看我的 LeetCode 算法解题目录. 已解决 123/123 - 简单 54 中等 51 困难 18 前置入门学习 MySQL 基本查询. ...

  4. 小型电话薄管理系统(Mysql数据库)

      学习完Java的基础内容与Mysql相关内容,用一个小型的电话薄管理系统来检验巩固一下所学的知识.        首先分析一下电话薄管理系统,电话薄内存储了用户的姓名,电话号码,地址等信息,向数据 ...

  5. 2022百度网盘目录管理系统

    由于之前的gopan系统无法使用了,所以,我们团队开发了新的目录管理系统, 支持后台绑定百度网盘. 支持扩容盘. 支持扩容盘视频在线播放 支持在线浏览网盘文件 支持在线浏览pdf.word.图片等文档 ...

  6. [英雄星球六月集训LeetCode解题日报] 第七日 哈希表

    [英雄星球六月集训LeetCode解题日报] 第七日 哈希表 一. 442. 数组中重复的数据 1. 题目描述 2. 思路分析 3. 代码实现 二. 2068. 检查两个字符串是否几乎相等 1. 题目 ...

  7. PTA 7-42 《图书目录管理系统》(初级修订版)

    请设计一个简单的图书目录管理系统(初级版). 图书目录信息包括: 统一书号(不超过13字符) 书名(不超过30字符) 作者(不超过20字符) 出版社(不超过30字符) 出版日期(包括:年.月.日) 价 ...

  8. 文件+树,图书目录管理系统

    文件+树,图书目录管理系统 [主要内容] 开发一个图书目录管理系统,作为图书馆系统的子系统.目录管理系统管理的对象是目录,要求是实现以下基本功能: (1)对目录的增删查改功能 (2)对文件中保存的目录 ...

  9. LeetCode 1166. 设计文件系统(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 你需要设计一个能提供下面两个函数的文件系统: create(path, value): 创建一个新的路径,并尽可能将值 value 与路径 path 关联 ...

最新文章

  1. 关于AttributeError:‘Flask‘ object has no attribute ‘ensure_sync‘的报错解决
  2. PUSHA/PUSHAD POPA/POPAD 指令详解
  3. ArcGIS Python
  4. 基于python----图像的表示和可视化
  5. vba传值调用_vba – 动态调用从形状OnAction属性传递参数的宏
  6. fastNLP工具包, 快速实现序列标注模型
  7. Vue_(组件)计算属性
  8. 风格迁移篇--AdaAttN:重新审视任意神经风格转移中的注意机制
  9. 如何搜索视频和字幕?
  10. 与柯尼汉谈丹尼斯·里奇
  11. photoshop安装教程
  12. PNG格式的证件照怎么转成JPG格式?教你一招轻松转换
  13. centos7用html5播放器,centos7安装多媒体播放器SMPlayer
  14. 10年网安经验分享:一般人别瞎入网络安全行业
  15. NginxProxyManager实现unraid反向代理
  16. WAF(Web Application Firewall)
  17. 【Java笔记+踩坑】SpringBoot基础2——运维实用
  18. 口袋微博 服务器 客户端代码
  19. ansa打开catia文件_ANSA软件介绍.doc
  20. unity3d(人机博弈,棋类相关)

热门文章

  1. mysql5.7.x 1251_MySql-8.0.x免安装版下载与配置,Navicat打开数据库链接报错1251的解决办法...
  2. 深入浅出WPF之Binding的使用(二)
  3. 字符数组,字符串、数字转化
  4. 精雕道路怎么遍弧形_【养护技术】道路“创可贴”——沥青冷补料 六大优势助力道路养护...
  5. php 加密保存mysql_PHP及MYSQL中字符串加密函数
  6. uboot启动过程总结的思维导图
  7. 查看linux服务器信息
  8. 秒懂机器学习---当机器学习遇上决策树....
  9. 谈谈JDK8中的字符串拼接
  10. 超乎想象,数据揭示自学成才的码农为何备受青睐