Practice Arena

Python Coding Challenges

Write real Python in the browser. Instant feedback. From beginner to expert.

925 challenges 556 easy 323 medium 46 hard
Data Structures & Algorithms medium

Level Order Traversal

Implement a function that performs a level order traversal of a binary tree and returns node values as a list of lists.

binary-tree queue bfs
+20 pts 25m
Data Structures & Algorithms medium

Delete duplicates sorted II

Given a sorted list, remove duplicates in place so each element appears at most twice, returning the new length.

arrays two-pointers in-place
+20 pts 20m
Data Structures & Algorithms medium

Accounts Merge

Given a list of accounts, merge those that share any email and return sorted accounts.

union-find graph sorting
+28 pts 30m
Data Structures & Algorithms medium

Strobogrammatic number II

Given a positive integer n, return all strobogrammatic numbers of length n in ascending order.

strings recursion number
+25 pts 20m
Decorators & Context Managers medium

Memoize with TTL

Implement a decorator that caches function results for a limited time, returning cached values within the TTL and recomputing after expiry.

decorators memoization caching
+20 pts 20m
Math & Number Theory medium

Zeller Congruence Weekday

Implement a function that returns the weekday name for a given date using Zeller's congruence.

math modular-arithmetic date
+20 pts 20m
Math & Number Theory medium

Extended Euclidean Algorithm

Implement the extended Euclidean algorithm to return (gcd, x, y) such that ax + by = gcd(a, b).

gcd extended-euclidean number-theory
+30 pts 25m
Math & Number Theory medium

Polynomial Fit Coefficients

Implement a function that returns the coefficients of the best-fit quadratic polynomial for given points.

least-squares linear-algebra polynomial
+25 pts 25m
Bit Manipulation medium

Bitwise AND of a Range

Given a range [a, b], return the bitwise AND of all integers in that inclusive range without iterating over all numbers.

bitwise range optimization
+20 pts 15m
Bit Manipulation medium

Maximum XOR Pair

Implement max_xor_pair(nums) that returns the maximum XOR value obtainable by pairing any two numbers in the given list.

bit-manipulation xor array
+25 pts 30m
Dynamic Programming medium

Kadane Variant: Maximum Product Subarray

Implement max_product_subarray(nums) that returns the maximum product of any contiguous subarray.

kadane subarray product
+30 pts 25m
Dynamic Programming medium

Perfect Squares Sum

Given a positive integer n, return the least number of perfect squares (e.g., 1, 4, 9, 16, ...) that sum to n.

dynamic-programming math optimization
+25 pts 25m
Dynamic Programming medium

Longest Arithmetic Subsequence

Given a list of integers, return the length of the longest arithmetic subsequence (constant difference) within it.

dp subsequence hashmap
+30 pts 25m
Dynamic Programming medium

Ugly Number II

Given an integer n, return the nth ugly number using an efficient dynamic programming approach.

dynamic programming math pointers
+25 pts 25m
Dynamic Programming medium

Shortest Common Supersequence

Given two strings, return any shortest supersequence that contains both as subsequences.

dynamic-programming strings lcs
+30 pts 30m
Dynamic Programming medium

Subset Sum Exists

Given a list of positive integers and a target sum, return whether some subset adds up exactly to the target.

subset sum dynamic programming knapsack
+25 pts 30m
Trees & Binary Trees medium

Binary tree left side view

Given a binary tree, return the leftmost node's value at each depth, from top to bottom.

binary-tree levels bfs
+20 pts 20m
Trees & Binary Trees medium

Delete Node in BST

Implement a function that deletes a key from a binary search tree and returns the new root.

binary-search-tree tree-traversal recursion
+20 pts 20m
Trees & Binary Trees medium

Kth Smallest in BST

Implement a function that returns the k-th smallest value in a binary search tree.

bst inorder recursion
+25 pts 25m
Trees & Binary Trees medium

Count Complete Tree Nodes

Given a complete binary tree, return its node count faster than O(n) time.

binary-tree complete-tree tree-traversal
+25 pts 25m
Trees & Binary Trees medium

Zigzag Level Order Traversal

Implement a function that returns the zigzag level-order traversal of a binary tree.

binary-tree breadth-first-search queue
+25 pts 25m
Graphs & Graph Algorithms medium

Articulation Points

Implement a function that returns the articulation points of an undirected graph.

graphs dfs bridges
+25 pts 30m
Graphs & Graph Algorithms medium

Bridges in Graph

Implement a function that returns all bridges in an undirected graph.

graph dfs bridges
+30 pts 30m
Graphs & Graph Algorithms medium

Course Schedule Can Finish

Given numCourses and prerequisites, return whether all courses can be finished without cyclic dependencies.

graph cycle topological
+25 pts 30m

Showing 25–48 of 96 challenges · medium

Guide: free Python coding challenges

Practice Python by solving problems

PythonSkillset challenges are hands-on coding exercises from beginner to advanced. Open a challenge, read the problem, write Python in the split-pane editor, and run tests with Pyodide — no install required.

How to use the arena

  1. Pick a category — basics, algorithms, strings, and more
  2. Open a challenge, read the statement, and edit the starter code
  3. Run tests, fix failures, then try a related quiz or tutorial lesson

Challenges vs tutorials and quizzes

Challenges test what you can build under constraints. For guided teaching, use our Python tutorials. For quick checks, try quizzes or copy snippets from code samples.