Competitive ProgrammingEasy

Longest Bitonic Subsequence

Detailed guide and Python implementation for the 'Longest Bitonic Subsequence' problem.

Problem Statement

Easy

Write a function lbs(arr) that returns the length of the longest bitonic subsequence in an array arr. A subsequence is bitonic if it first increases and then decreases, or strictly increases, or strictly decreases.

Constraints
  • 1 <= len(arr) <= 1000
  • -10^4 <= arr[i] <= 10^4

Examples

Example 1
Input
lbs([1, 11, 2, 10, 4, 5, 2, 1])
Output
6
Explanation

The longest bitonic subsequence is [1, 2, 10, 5, 2, 1] or [1, 2, 4, 5, 2, 1] with length 6.

Example 2
Input
lbs([12, 11, 40, 5, 3, 1])
Output
5
Explanation

The longest bitonic subsequence is [12, 11, 5, 3, 1] or [11, 40, 5, 3, 1] with length 5.

Need a Hint?
Consider using Dynamic Programming-specific data structures like sets or heaps.
Edge Cases to Watch
  • Empty input structures
  • Single element inputs
  • Large numerical bounds

Ready to Solve?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Open in Editor

Recommended Python Resources

Expand your knowledge with related interactive tutorials, cheat sheets, and code comparisons.