LeetCode-Python-379. 电话目录

646 篇文章 23 订阅

设计一个电话目录,让它支持以下操作:

  1. get: 返回一个没有被分配过的电话号码,并将该电话号码设置为已分配。
  2. check: 检查给定的电话号码是否未被分配。
  3. 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);

思路:

坑点:题目里没提到get失败应该返回-1 这个条件……

用桶排序的思想解决。

class PhoneDirectory(object):

    def __init__(self, maxNumbers):
        """
        Initialize your data structure here
        @param maxNumbers - The maximum numbers that can be stored in the phone directory.
        :type maxNumbers: int
        """
        self.list = [0 for _ in range(maxNumbers)]
        

    def get(self):
        """
        Provide a number which is not assigned to anyone.
        @return - Return an available number. Return -1 if none is available.
        :rtype: int
        """
        for i, x in enumerate(self.list):
            if x == 0:
                self.list[i] = 1
                return i
        return -1

    def check(self, number):
        """
        Check if a number is available or not.
        :type number: int
        :rtype: bool
        """
        return self.list[number] == 0

    def release(self, number):
        """
        Recycle or release a number.
        :type number: int
        :rtype: None
        """
        self.list[number] = 0    

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值