mediumDSA

How do you find the longest increasing subsequence?

269 views
01

Understand the problem

Explain LIS.

dpsubsequence
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

Patience sort (binary search)
Run Playground
import bisect

def length_of_lis(nums):
    tails = []
    for x in nums:
        i = bisect.bisect_left(tails, x)
        if i == len(tails):
            tails.append(x)       # x extends the longest run
        else:
            tails[i] = x          # x is a smaller tail for that length
    return len(tails)


# --- demo ---
print(length_of_lis([10, 9, 2, 5, 3, 7, 101, 18]))   # 4  (e.g. 2,3,7,18)
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.