The approach: Initialize dp array with all s For each i from to n-: - For each j from to i-: - If nums[j] < nums[i]: dp[i] = max(dp[i], dp[j] + ) Return max of dp array There's also an approach using binary search on a separate array that tracks the smallest tail for each length.
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
$ curl repovive.com/roadmaps/maang-interview-prep/dynamic-programming/lis-solution
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████████████████████████████████████████████████████████████████████████████████