classPhoneDirectory{public:/** Initialize your data structure here @param maxNumbers - The maximum numbers that can be stored in the phone directory. */PhoneDirectory(intmaxNumbers):next(maxNumbers){for(inti=0;i<maxNumbers-1;++i)next[i]=i+1;next.back()=0;}/** Provide a number which is not assigned to anyone. @return - Return an available number. Return -1 if none is available. */intget(){if(next[number]==-1)return-1;constintans=number;number=next[number];next[ans]=-1;// Mark as usedreturnans;}/** Check if a number is available or not. */boolcheck(intnumber){returnnext[number]!=-1;}/** Recycle or release a number. */voidrelease(intnumber){if(next[number]!=-1)return;next[number]=this->number;this->number=number;}private:intnumber=0;// Current possible available numbervector<int>next;// Next available number};
classPhoneDirectory{/** * Initialize your data structure here * * @param maxNumbers - The maximum numbers that can be stored in the phone * directory. */publicPhoneDirectory(intmaxNumbers){next=newint[maxNumbers];for(inti=0;i<maxNumbers-1;++i)next[i]=i+1;next[maxNumbers-1]=0;}/** * Provide a number which is not assigned to anyone. * * @return - Return an available number. Return -1 if none is available. */publicintget(){if(next[number]==-1)return-1;finalintavailableNum=number;number=next[number];next[availableNum]=-1;// Mark as usedreturnans;}/** Check if a number is available or not. */publicbooleancheck(intnumber){returnnext[number]!=-1;}/** Recycle or release a number. */publicvoidrelease(intnumber){if(next[number]!=-1)return;next[number]=this.number;this.number=number;}privateintnumber;// Current possible available numberprivateint[]next;// Next available number}