A glossary of selected terms specific to LeetCode practice and algorithmic coding interviews.

**accepted**: The status that LeetCode reports when a submission passes all test cases and runs within the time allowance.

**algorithm**: The steps required to solve a **problem**. An algorithm operates on data stored in **data structures**, and can be analyzed using tools from the field of **discrete mathematics**. These three topics (algorithms, data structures, and discrete math) are the main areas of study required to solve LeetCode problems.

**coding interview**: An interview where the interviewer asks the candidate to write solutions to coding problems. The related term **algorithmic coding interview** specifies that the coding problems resemble those found on LeetCode, as opposed to real-world problems.

**competitive programming**: Solving problems as part of a contest. Although LeetCode hosts weekly and biweekly programming contests, some people distinguish between platforms like LeetCode that are explicitly focused on interview preparation, and pure competitive programming platforms like Codeforces.

**daily challenge problem**: A problem that LeetCode selects from their problem library and designates as the official problem to solve that day. Solving it extends your **streak**, adds to your **LeetCoin** balance, and contributes to other virtual and (possibly) real-world benefits.

**deliberate practice**: A method for improving performance by repeatedly focusing on specific skills that need improvement, getting feedback on results, and adjusting your practice accordingly.

**Easy, Medium, and Hard**: The three categories that LeetCode uses to rank problem difficulty. Easy problems can be solved with minimal specialized knowledge. Medium problems require reasonable proficiency in one or more topics. Hard problems require mastery of a topic, or combining multiple topics in creative ways.

**interval**: In **spaced repetition** practice, the elapsed time between two practice sessions for a particular **model problem**.

**LeetCode**: An online judge containing interview preparation resources, notably problems of the type asked in algorithmic coding interviews.

**LeetCoin**: Virtual currency that can be redeemed for digital and physical LeetCode merchandise.

**model problem**: A **problem** that is especially useful for practicing a concept using **spaced repetition**.

**model solution**: A detailed solution to a **model problem** that covers what you need to learn to solve that problem and related problems.

**practice**: The answer to the question “How do I get better at LeetCode?” Although this advice is correct in principle, executing it effectively can be challenging.

**practice journal**: A document where you take notes about each practice session. These notes can help you design your practice to be more effective by focusing on what is giving you trouble, rather than just endlessly solving problems.

**problem**: A statement of the form: given (input), return (output). LeetCode provides the input, and your program returns the output. A problem description contains a statement of the requirements, example input and output, constraints, and often diagrams.

**problem list**: A list of problems designed for a specific practice goal. Examples include problems that cover a specific LeetCode **topic** or problems that you are currently practicing using **spaced repetition**.

**solution**: The code that you write to solve a LeetCode problem.

**spaced repetition**: An evidence-based learning technique in which you repeatedly practice the same LeetCode problem, while increasing the elapsed between practice sessions for that problem.

**solve**: Write a program that is **accepted** by LeetCode for a particular problem. The goal is to write a complete solution for a problem you haven’t seen before within a time constraint. But other ways of solving problems are useful to get to that point.

**streak**: The number of consecutive days that you have submitted the **daily challenge problem**.

**topic**: A word or phrase that summarizes what skills are required to solve a LeetCode problem. A topic is usually the name of an **algorithm** (e.g., binary search), a data structure (e.g., hash table), a programming technique (e.g., dynamic programming), or a field of study (e.g., number theory).

*This year, I’m publishing a series of tips for effective LeetCode practice. To read the tips in order, start with A Project for 2023.*