LeetCode 2797: Partial Function with Placeholders Solution

Master LeetCode problem 2797 (Partial Function with Placeholders), a easy 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.

2797. Partial Function with Placeholders

Easy

Problem Explanation

Explanation:

Given a function f(a, b, c) with three parameters, design a class PartialFunction that allows partial application of the function with placeholders. Placeholders are denoted by a special symbol, e.g., '_'. When a placeholder is used, the argument at that position is not provided during the function call.

Algorithmic Idea:

  1. Create a class PartialFunction that stores the function f and the arguments passed during partial application.
  2. Implement a method apply in the class that takes the remaining arguments to fill in the placeholders and returns the result of calling the function f with all arguments.
  3. Replace the placeholders with the provided arguments during the apply method.
  4. Maintain a count of placeholders to correctly map the arguments.
  5. If all arguments are provided, call the function f with all arguments directly.

Time Complexity:

  • The time complexity for applying the function is O(n), where n is the number of arguments in the function.

Space Complexity:

  • The space complexity is O(n), where n is the number of arguments stored in the class.

:

Solution Code

class PartialFunction {
    private final TriFunction<Integer, Integer, Integer, Integer> f;
    private final List<Integer> args;

    public PartialFunction(TriFunction<Integer, Integer, Integer, Integer> f) {
        this.f = f;
        this.args = new ArrayList<>();
    }

    public void partial(int arg) {
        args.add(arg);
    }

    public int apply(int a, int b, int c) {
        List<Integer> filledArgs = new ArrayList<>(args);
        for (int i = 0; i < filledArgs.size(); i++) {
            if (filledArgs.get(i) == '_') {
                filledArgs.set(i, i == 0 ? a : (i == 1 ? b : c));
            }
        }
        return f.apply(filledArgs.get(0), filledArgs.get(1), filledArgs.get(2));
    }
}

@FunctionalInterface
interface TriFunction<A, B, C, R> {
    R apply(A a, B b, C c);
}

Try It Yourself

Loading code editor...

Frequently Asked Questions

How to solve LeetCode 2797 (Partial Function with Placeholders)?

This page provides optimized solutions for LeetCode problem 2797 (Partial Function with Placeholders) 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 2797 (Partial Function with Placeholders)?

The time complexity for LeetCode 2797 (Partial Function with Placeholders) varies by solution. Check the detailed explanation section for specific complexities in Java, C++, and Python implementations.

Can I run code for LeetCode 2797 on DevExCode?

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

Back to LeetCode Solutions