方法一:直接DP (时间复杂度O(n^2) 空间复杂度 O(2n))
方法二:二分 (时间复杂度O(nlongn) 空间复杂度O(n))
思路:每读入一个数据与栈顶元素比较,
如果小于栈顶元素,直接入栈,
如果大于等于栈顶元素,调用二分查找栈中元素第一个比当前输入的元素大的栈内元素
用当前元素替换栈内找到的元素
输出栈的高度即为LIS的长度
由此可见无论是时间还是空间用二分法计算的结果都比dp要好
方法一:直接DP (时间复杂度O(n^2) 空间复杂度 O(2n))
方法二:二分 (时间复杂度O(nlongn) 空间复杂度O(n))
思路:每读入一个数据与栈顶元素比较,
如果小于栈顶元素,直接入栈,
如果大于等于栈顶元素,调用二分查找栈中元素第一个比当前输入的元素大的栈内元素
用当前元素替换栈内找到的元素
输出栈的高度即为LIS的长度
由此可见无论是时间还是空间用二分法计算的结果都比dp要好