首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构与算法
木有寸
创建于2021-10-30
订阅专栏
数据结构与算法学习
暂无订阅
共46篇文章
创建于2021-10-30
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
用JavaScript搞定二叉树的层序遍历(迭代 + 递归)
一、前言 此篇是关于二叉树的广度优先遍历(递归 + 迭代),想看二叉树的深度遍历,建议看我之前写的用JavaScript搞定二叉树的前中后序遍历 二、遍历顺序说明 关于层序遍历,大家可以看leetco
用JavaScript刷leetcode第589题-N叉树的前序遍历(递归)
一、前言 将以递归来解这道题。用递归的时候无需太注意这个递归时怎么展开的。我们只需要用知道这个递归是正确的就可以了(假设证明法证明递归是正确的)。 写递归的时候要注意3点: 递归函数的意义 边界条件
用JavaScript刷leetcode第1124题-表现良好的时间段(前缀和 + 贪心)
求区间和问题转换成求相应前缀和然后做差 ; 最大区间可以用贪心,左边界越小越好,右边界越大越好。
用JavaScript刷leetcode第636题-函数的独占时间
函数执行这类题目,是关于事件的完全包含关系,故用栈来解决。 这道题的核心就是判断 计算出的时间是属于哪个函数的独占时间。
用JavaScript刷leetcdoe第227题-基本计算器Ⅱ(双栈法)
一、前言 本来是准备用分治递归来解的,但是显示超时。超时代码如下,然后就改用双栈来解这道题了。双栈或者分治递归属于这类题的常规解法
用JavaScript刷leetcode第331题-验证二叉树的前序序列化
1. 事件与事件是完全包含关系, 用栈解决。 每个非空节点都有左右子节点。从根节点往下验证,需要验证每个节点,子节点验证成功,才能验证跟根节点,属于包含关系 2. 每个非空几点都有两个子节点。故遇见
用JavaScript搞定二叉树的前中后序遍历(迭代法 + 递归法)
此篇是关于二叉树的深度遍历,想看广度遍历的可以撤退了。 此篇将用递归和迭代法来遍历二叉树, 并且递归和迭代都是通用写法。迭代用的是标记法
用JavaScript刷leetcode第1249题-移除无效的括号
一、前言 虽然这题比较简单,但是我第一次提交没通过,没通过的原因是,Array.proptotype.splice方法会改变原数组的length,在此记录下自己犯得错误,下次谨记。
用JavaScript刷leetcode第1021题-删除最外层括号
一听到括号两个字,第一反应估计都是用栈,找到最外层的括号删掉就好了。那问题来了,如何判断是最外层的括号? 压栈前栈为空,此时的左括号即为最外层 压栈后栈为空,此时的右括号即为最外层 我们也可
用JavaScript刷leetcode第946题-验证栈序列
- 定义一个栈`stack`模拟进栈出栈过程 - 定义一个指针`popedIndex`指向`poped`序列未处理部分 - 遍历入栈序列`pushed`,入栈 - 入栈的同时,检查`stack`栈顶元
用JavaScript刷leetcode第844题-比较含退格的字符串
用栈来做这题,遇到不是#的子串入栈,遇到#出栈 用栈来做这题,遇到不是#的子串入栈,遇到#出栈 用栈来做这题,遇到不是#的子串入栈,遇到#出栈
用JavaScript刷leetcode第682题-棒球比赛
一、前言 题比较简单,注意得分累加时可能会有问题,因为初始给的数据都是字符串类型。 举个例子:3 + 3 与 3 + '3' 这两个式子答案不一样,分别为6 与 '33'
用JavaScript刷leetcode-面试题03.04.化栈为队
- 用两个栈来模拟队列 - push栈 用来 模拟入队 - pop栈 用来 模拟出队 - 当pop栈为空时,需要把push栈内所有元素出栈,并入栈pop栈, 逆序过程以达到先进先出
用JavaScript刷leetcode第621题-任务调度器
矩阵解法,关注两种情况 冷却时间可以填满,任务执行时间 = 任务总数量 冷却时间不可以填满,任务执行时间 = (第一名得分数 - 1) × (冷却时间 + 1) + 第一名并列数
用JavaScript刷leetcode第969题-煎饼排序
我是用迭代写这道题的,想看递归的可以直接跳出来了。 一句话概括此排序就是:在数组剩余部分找到最大值,先放到数组的头部,再放到数组剩余部分的末尾。
用JavaScript刷leetcode第860题-柠檬水找零
找零一般都是用贪心算法。 局部最优是每次找零尽量留5元,局部最优导致结果最优。
用JavaScript刷leetcode第859亲密字符串
1.字符串相等,需要看26个小写英文字母里,是否有出现两次以上的字母, 有则是亲密字符串。 2.字符串不相等的情况下,s与goal应该有且只有两个位置的字符是不一样的,并且交叉相等,才是亲密字符串。
用JavaScript刷leetcode第933题-最近的请求次数
维护一个数组,用来存每次发请求时的时间戳; 这个数组里的元素是有序的,升序; 这个数组里的时间戳最大值-最小值<=3000; 由于是升序,即arr[length - 1] - arr[0]<=3000
用JavaScript刷leetcode第1670题-设计前中后队列
其实JavaScript的数组模拟很简单,因为JavaScript数组本身就支持前中后的操作。可以用一个数组实现,用两个数组实现意义不是很大。 这里我将用循环双端队列来实现前中后队列。我之前
用JavaScript刷leetcode第641题-设计循环双端队列
一、前言 这题需要一些前置知识,可以先看我的上篇文章 设计循环队列 双端循环队列与普通循环队列的主要区别就是 双端循环队列既可以在队首插入删除,也可以在队尾插入删除,不遵循先进先出。
下一页