longestIncreasingSubsequence function
📈 Longest Increasing Subsequence (LIS) - O(n log n)
Returns the length of the longest strictly increasing subsequence in nums.
Uses patience sorting (binary search) for efficiency.
Implementation
int longestIncreasingSubsequence(List<int> nums) {
if (nums.isEmpty) return 0;
final List<int> tails = [];
for (final num in nums) {
int left = 0, right = tails.length;
while (left < right) {
int mid = (left + right) >> 1;
if (tails[mid] < num) {
left = mid + 1;
} else {
right = mid;
}
}
if (left == tails.length) {
tails.add(num);
} else {
tails[left] = num;
}
}
return tails.length;
}