LeetCode 379: Design Phone Directory Solution

Master LeetCode problem 379 (Design Phone Directory), a medium challenge, with our optimized solutions in Java, C++, and Python. Explore detailed explanations, test your code in our interactive editor, and prepare for coding interviews.

379. Design Phone Directory

Problem Explanation

Explanation:

To solve this problem, we can use a set to store available phone numbers and a queue to store released phone numbers. When a new phone number is requested, we check if there are any released numbers in the queue. If so, we can assign the released number to the new request. If not, we assign the smallest available number from the set.

When a number is released, we add it to the queue. This way, we can efficiently allocate and deallocate phone numbers in constant time.

: :

Solution Code

import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Set;

class PhoneDirectory {
    Set<Integer> availableNumbers;
    Queue<Integer> releasedNumbers;

    public PhoneDirectory(int maxNumbers) {
        availableNumbers = new HashSet<>();
        releasedNumbers = new LinkedList<>();
        for (int i = 0; i < maxNumbers; i++) {
            availableNumbers.add(i);
        }
    }

    public int get() {
        if (availableNumbers.isEmpty()) {
            return -1;
        }
        int num;
        if (!releasedNumbers.isEmpty()) {
            num = releasedNumbers.poll();
        } else {
            num = availableNumbers.iterator().next();
            availableNumbers.remove(num);
        }
        return num;
    }

    public boolean check(int number) {
        return availableNumbers.contains(number) || releasedNumbers.contains(number);
    }

    public void release(int number) {
        if (!check(number)) {
            releasedNumbers.offer(number);
            availableNumbers.add(number);
        }
    }
}

Try It Yourself

Loading code editor...

Related LeetCode Problems

Frequently Asked Questions

How to solve LeetCode 379 (Design Phone Directory)?

This page provides optimized solutions for LeetCode problem 379 (Design Phone Directory) in Java, C++, and Python, along with a detailed explanation and an interactive code editor to test your code.

What is the time complexity of LeetCode 379 (Design Phone Directory)?

The time complexity for LeetCode 379 (Design Phone Directory) varies by solution. Check the detailed explanation section for specific complexities in Java, C++, and Python implementations.

Can I run code for LeetCode 379 on DevExCode?

Yes, DevExCode provides an interactive code editor where you can write, test, and run your code for LeetCode 379 in Java, C++, or Python.

Back to LeetCode Solutions