Explain LIS.
01
01
Understand the problem
dpsubsequence
02
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
03
Study the solution
The solution is waiting
Give it an honest attempt first — then compare your thinking with the full walkthrough.
04
04
Read the code
Patience sort (binary search)
Run Playgroundimport 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
05
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.