Problem Solving

Data structures, algorithms and deliberate practice.

I use problem-solving practice to strengthen my understanding of common algorithmic patterns and improve how I reason about unfamiliar engineering problems.

LeetCode data is temporarily unavailable

The rest of the portfolio remains available.

Progress

Progress over time.

Tracking consistency and problem-solving growth over longer periods rather than focusing only on the total number of problems completed.

Last 30 days

Collecting data

This comparison will appear once enough historical data exists.

Last 90 days

Collecting data

This comparison will appear once enough historical data exists.

Practice

What I’m practising.

The recurring data structures and problem-solving patterns I’m currently reinforcing through deliberate practice.

Hash maps & setsSliding windowPrefix sumsTwo pointersBinary searchLinked listsTrees & BSTsMonotonic stack / dequeArrays & subarraysBucket-based techniques

Approach

How I use algorithm practice.

The objective is broader engineering ability: stronger reasoning, better pattern recognition and more confidence working through unfamiliar problems.

Java first

I solve algorithm problems primarily in Java so the practice reinforces the language alongside the underlying data structures.

Patterns over memorisation

The goal is to recognise reusable patterns such as sliding windows, binary search and monotonic structures rather than memorise individual solutions.

Understanding over volume

I prioritise being able to explain why an approach works, its complexity and when to use it instead of optimising purely for problem count.