1 使用binary search和dynamic programming
2 既然是dp解法,所以需要建一个dp数组
3 纯动态规划解法,时间复杂度是O(n**2),维护一个一维dp数组,dp[i]表示以nums[i]结尾的最长递增子序列的长度
4 binary search:时间复杂度O(nlogn),因为binary search是O(logn),再加上最外面的一层for循环。初始化一个array,把首元素放到array中,然后遍历剩下的元素,当元素比这个小时,用这个元素替换掉第一个元素,当比array中最尾部的都大时,就append到array后面,当在首元素和尾元素之间时,用二分查找法找到第一个大于等于这个元素的值,替换掉这个值,就这样一直遍历完,最后array的长度就是所求。但要注意的是,最后array的值有可能并不是一个LIS。
5 还要写一下dp的解法