天天看點

[LeetCode] Design Phone Directory 設計電話目錄

Design a Phone Directory which supports the following operations:

<code>get</code>: Provide a number which is not assigned to anyone.

<code>check</code>: Check if a number is available or not.

<code>release</code>: Recycle or release a number.

Example:

又是一道設計題,讓我們設計一個電話目錄管理系統,可以配置設定電話号碼,查詢某一個号碼是否已經被使用,釋放一個号碼,需要注意的是,之前釋放的号碼下一次應該被優先配置設定。這題對C++解法的時間要求非常苛刻,嘗試了好幾種用set,或者stack/queue,或者使用vector的push_back等等,都TLE了,終于找到了一種可以通過OJ的解法。這裡用兩個一維數組recycle和flag,分别來儲存被回收的号碼和某個号碼的使用狀态,還有變量max_num表示最大數字,next表示下一個可以配置設定的數字,idx表示recycle數組中可以被重新配置設定的數字的位置,然後在get函數中,沒法配置設定的情況是,當next等于max_num并且index小于等于0,此時傳回-1。否則我們先看recycle裡有沒有數字,有的話先配置設定recycle裡的數字,沒有的話再配置設定next。記得更新相對應的flag中的使用狀态,參見代碼如下:

上一篇: poj 2240

繼續閱讀