Skip to content

Commit 1b03871

Browse files
committedApr 16, 2021
fix lint
1 parent 42e068a commit 1b03871

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed
 

‎192.精读《DOM diff 最长上升子序列》.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080

8181
先解释下时间复杂度,因为操作原因,栈内存储的数字都是升序的,因此可以采用二分法比较与插入,复杂度为 logn,外层 n 循环,所以整体时间复杂度为 O(nlogn)。另外这个方案的问题是,答案的长度是准确的,但栈内数组可能是错误的。如果要完全理解这句话,就得完全理解这个算法的原理,理解了原理才知道如何改进以得到正确的子序列。
8282

83-
接着要解释原理了,**开始的思考并不复杂,可以边喝茶边看**。首先我们要有个直观的认识,就是为了让最长上升子序列尽可能的长,我们就要尽可能保证挑选的数字增速尽可能的慢,反之就尽可能的快。比如如果我们挑选的数字是 `0, 1, 2, 3, 4` 那么这种贪心就贪的比较稳,因为已经尽可能增长缓慢了,后面遇到的大概率可以放进来。但如果我们挑选的是 `0, 1, 100` 那挑到 `100` 的时候就该慌了,因为一下增加到 `100`,后面 `100` 以内的数字不就都放弃了吗?这个时候要 `100` 不见得是明智的选择,丢掉反而可能未来空间更大,这其实就是贪心的思考,所谓局部最优解就是全局最优解。
83+
接着要解释原理了,**开始的思考并不复杂,可以边喝茶边看**。首先我们要有个直观的认识,就是为了让最长上升子序列尽可能的长,我们就要尽可能保证挑选的数字增速尽可能的慢,反之就尽可能的快。比如如果我们挑选的数字是 `0, 1, 2, 3, 4` 那么这种贪心就贪的比较稳,因为已经尽可能增长缓慢了,后面遇到的大概率可以放进来。但如果我们挑选的是 `0, 1, 100` 那挑到 `100` 的时候就该慌了,因为一下增加到 `100`,后面 `100` 以内的数字不就都放弃了吗?这个时候要 `100` 不见得是明智的选择,丢掉反而可能未来空间更大,这其实就是贪心的思考,所谓局部最优解就是全局最优解。
8484

8585
但上面的思路显然不完整,我们继续想,如果读到 `0, 1, 100` 的时候,万一后面没有数字了,那么 `100` 还是可以放进来的嘛,虽然 `100` 很大,但毕竟是最后一个,还是有用的。**所以从左到右遍历的时候,遇到更大的数字优先要放进来**,重点在于,如果继续往后读取,读到了比 `100` 还小的数字,怎么办?
8686

0 commit comments

Comments
 (0)
Please sign in to comment.