quickSort 会写递归版本, partition不开新空间. nlogn, logn(只考虑算法运行空间,但是n个元素必然需要n的空间)
mergeSort 会写递归版本, merge需要新空间, nlogn, n+logn;
mergeSort 会写迭代版本, merge需要新空间, nlogn, n;
quickSort 会写递归版本, partition不开新空间. nlogn, logn(只考虑算法运行空间,但是n个元素必然需要n的空间)
mergeSort 会写递归版本, merge需要新空间, nlogn, n+logn;
mergeSort 会写迭代版本, merge需要新空间, nlogn, n;
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
快速排序 和 归并排序 都是采用分治法(Divide and Conquer)的非常典型的应用。
使用callback以及call技术, 写出标准化的BFS,DFS. 以及扩展性极强的contain.
简单的链表训练
一个专属JS的不起眼的坑!!!
1 | for(var i in nums){ |
上述代码中nums[i+1]结果undifined, 因为for in遍历的原理是什么呢? 其实是把nums数组当做Obejct(一个键值对结构), 其中i 是对于其key的遍历, 因此i 其实是字符串”0”, 而i+1则表示”01”, 自然是找不到结果.