算法设计
算法相关笔记
叽歪小Q
这个作者很懒,什么都没留下…
展开
-
动态规划入门及经典基础算法
动态规划入门及经典基础算法(js实现)一、思想与性质二、动画规划过程三、经典模型1.线性模型2.区间模型3.树状模型四、实现的方法五、经典入门算法及代码实现1、爬楼梯2、连续子数组的最大和3、使用最小花费爬楼梯4、按摩师5、打家劫舍6、买卖股票的最佳时机一、思想与性质动态规划的核心思想是把原问题分解成子问题进行求解,也就是分治的思想。那么什么问题适合用动态规划呢?我们通过一个现实中的例子,来理解这个问题。大家可能在公司里面都有一定的组织架构,可能有高级经理、经理、总监、组长然后才是小开发,今天我们原创 2020-07-20 22:48:31 · 389 阅读 · 0 评论 -
七大方法实现扁平化数组
// 使用栈let toOne = function(arr) { let stack = []; let res = []; stack.push(arr); while (stack.length) { let temp = stack[stack.length - 1]; if (temp.length) { let t = temp.shift(); if (Array.isArray(原创 2020-06-10 21:51:53 · 192 阅读 · 0 评论 -
十大排序算法合集超详细--原理、描述、动画、源码、复杂度、稳定性分析
排序算法十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据原创 2020-06-10 21:51:09 · 321 阅读 · 0 评论 -
二叉树的先中后序遍历 -- 递归实现、非递归的栈实现
二叉树的遍历// 树节点对象class TreeNode { constructor(val) { this.val = val; this.left = this.right = null; }}先中后序遍历(递归)// 先序遍历let preOrder = function(root){ if(!root) return []; return [root.val].concat(preOrder(root.le原创 2020-06-10 21:49:31 · 157 阅读 · 0 评论