问题描述 我们有一个数字的列表,比如 [6, 3, 1, 5, 2, 3, 7]。我们想找出这个列表中最长的“上升子序列”。 什么是上升子序列? 上升子序列是从原始列表中选出一些数字,这些数字要按照原来的顺序排列,且每个数字都要比前一个数字大。例如,[1, 2, 3, 7] 是一个上升子序列,因为它的每个数字都比前一个数字大。 解决方案 动态规划:我们将用一个聪明的方法来解决这个问题,叫做“动态规划”。这个方法的思想是:我们逐步构建出一个结果,每一步都用到之前的结果。 创建一个数组:我们会创建一个叫 dp 的数组。这个数组的每个位置 dp[i] 用来记录以 arr[i] 这个数字结...