379. Design Phone Directory
Создайте телефонный справочник, который изначально имеет maxNumbers пустых слотов для хранения номеров. Справочник должен хранить номера, проверять, пуст ли определенный слот, и освобождать данный слот.
Реализуйте класс PhoneDirectory:
PhoneDirectory(int maxNumbers) Инициализирует телефонный справочник с количеством доступных слотов maxNumbers.
int get() Предоставляет номер, который никому не назначен. returns -1, если номера недоступны.
bool check(int number) returns true, если слот доступен, и false в противном случае.
void release(int number) Перераспределяет или освобождает номер слота.
Beispiel:
Input
["PhoneDirectory", "get", "get", "check", "get", "check", "release", "check"]
[[3], [], [], [2], [], [2], [2], [2]]
Output
[null, 0, 1, true, 2, false, null, true]
C# Lösung
zugeordnet/originalusing System;
public class PhoneDirectory {
private bool[] isSlotAvailable;
public PhoneDirectory(int maxNumbers) {
isSlotAvailable = new bool[maxNumbers];
for (int i = 0; i < maxNumbers; i++) {
isSlotAvailable[i] = true;
}
}
public int Get() {
for (int i = 0; i < isSlotAvailable.Length; i++) {
if (isSlotAvailable[i]) {
isSlotAvailable[i] = false;
return i;
}
}
return -1;
}
public bool Check(int number) {
return isSlotAvailable[number];
}
public void Release(int number) {
isSlotAvailable[number] = true;
}
}
C++ Lösung
Auto-Entwurf, vor dem Einreichen prüfen#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
public class PhoneDirectory {
private bool[] isSlotAvailable;
public PhoneDirectory(int maxNumbers) {
isSlotAvailable = new bool[maxNumbers];
for (int i = 0; i < maxNumbers; i++) {
isSlotAvailable[i] = true;
}
}
public int Get() {
for (int i = 0; i < isSlotAvailable.size(); i++) {
if (isSlotAvailable[i]) {
isSlotAvailable[i] = false;
return i;
}
}
return -1;
}
public bool Check(int number) {
return isSlotAvailable[number];
}
public void Release(int number) {
isSlotAvailable[number] = true;
}
}
Java Lösung
zugeordnet/originalpublic class PhoneDirectory {
private boolean[] isSlotAvailable;
public PhoneDirectory(int maxNumbers) {
isSlotAvailable = new boolean[maxNumbers];
for (int i = 0; i < maxNumbers; i++) {
isSlotAvailable[i] = true;
}
}
public int get() {
for (int i = 0; i < isSlotAvailable.length; i++) {
if (isSlotAvailable[i]) {
isSlotAvailable[i] = false;
return i;
}
}
return -1;
}
public boolean check(int number) {
return isSlotAvailable[number];
}
public void release(int number) {
isSlotAvailable[number] = true;
}
}
JavaScript Lösung
zugeordnet/originalclass PhoneDirectory {
constructor(maxNumbers) {
this.isSlotAvailable = new Array(maxNumbers).fill(true);
}
get() {
for (let i = 0; i < this.isSlotAvailable.length; i++) {
if (this.isSlotAvailable[i]) {
this.isSlotAvailable[i] = false;
return i;
}
}
return -1;
}
check(number) {
return this.isSlotAvailable[number];
}
release(number) {
this.isSlotAvailable[number] = true;
}
}
Python Lösung
zugeordnet/originalclass PhoneDirectory:
def __init__(self, maxNumbers):
self.is_slot_available = [True] * maxNumbers
def get(self):
index = next((i for i, available in enumerate(self.is_slot_available) if available), -1)
if index != -1:
self.is_slot_available[index] = False
return index
def check(self, number):
return self.is_slot_available[number]
def release(self, number):
self.is_slot_available[number] = True
Go Lösung
zugeordnet/originalpackage main
type PhoneDirectory struct {
isSlotAvailable []bool
}
func Constructor(maxNumbers int) PhoneDirectory {
isSlotAvailable := make([]bool, maxNumbers)
for i := range isSlotAvailable {
isSlotAvailable[i] = true
}
return PhoneDirectory{isSlotAvailable}
}
func (this *PhoneDirectory) Get() int {
for i, available := range this.isSlotAvailable {
if available {
this.isSlotAvailable[i] = false
return i
}
}
return -1
}
func (this *PhoneDirectory) Check(number int) bool {
return this.isSlotAvailable[number]
}
func (this *PhoneDirectory) Release(number int) {
this.isSlotAvailable[number] = true
}
Algorithm
Инициализировать Array isSlotAvailable размером maxNumbers, установив значение true во всех индексах.
Метод get(): Проходить по Arrayу isSlotAvailable. Если найдется true на каком-либо индексе, установить isSlotAvailable[i] = false и вернуть i. Если доступных слотов нет, вернуть -1.
Метод check(number): Вернуть значение isSlotAvailable[number].
Метод release(number): Установить isSlotAvailable[number] = true.
😎
Stellen zu dieser Aufgabe
aktive Stellen with overlapping task tags are angezeigt.