Dynamic programmingLeetCode 1143

Lesson 75 of 76

Longest Common Subsequence

Find the length of the longest subsequence shared by two strings.

Watch on YouTube

Lesson notes

Try it before you watch

Restate the problem in your own words, list the edge cases, and sketch a solution with its running time. Then play the video and compare.

Reveal the key idea

dp[i][j] = dp[i − 1][j − 1] + 1 when the characters match, otherwise the larger of dp[i − 1][j] and dp[i][j − 1].

Pattern: Dynamic programming. Define a state, write the recurrence between states, and compute each state only once.

Complexity

Cost of the standard optimal approach for Longest Common Subsequence
Measure Bound
Time O(m · n)
Extra space O(m · n), or O(min(m, n)) with rolling rows

Walkthroughs often start from a simpler approach first; aim to reach these bounds. New to Big-O? Read understanding algorithmic complexity.