先来实现一个最简版的 deepClone
1 | function deepClone(obj) { |
迭代版本的 deepClone
最近 EDA 项目在解决一些性能上的问题,首当其冲的就是 deepClone,各种地方都在用,且十分卡性能。如何解决这个问题呢?
由于我们项目中的 deepClone 是一个递归版本的 deepClone,所以应该可以通过把它改成迭代版的 deepClone 来提速。
用栈来实现迭代。函数调用栈本身也是栈,但开销肯定比自己写的栈要大一些。
1 | function deepClone(obj) { |
最近 EDA 项目在解决一些性能上的问题,首当其冲的就是 deepClone,各种地方都在用,且十分卡性能。如何解决这个问题呢?
由于我们项目中的 deepClone 是一个递归版本的 deepClone,所以应该可以通过把它改成迭代版的 deepClone 来提速。
用栈来实现迭代。函数调用栈本身也是栈,但开销肯定比自己写的栈要大一些。
优先队列一般是用堆来实现的,查询复杂度是 O(1),插入和删除的复杂度是 O(logN)。堆结构就是一个完全二叉树,完全二叉树可以用数组实现。
测试场景:215. 数组中的第 K 个最大元素