首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
一日一练
Tonyzz
创建于2022-04-11
订阅专栏
算法小白的刷题之路~
暂无订阅
共62篇文章
创建于2022-04-11
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
一日一练: 最后一块石头的重量
为了尽可能多的石头被粉碎,每次找到重量最大的两个石头,比较重量,如果他们相等就都粉碎,如果不相等,会产生一块新的石头;然后再找到最大的两个,重新比较。。。 这里用最大堆。这篇文章有最小堆。。。
一日一练: 小顶堆
这道题的的第一种思路是sort + slice。 这道题还可以使用最小堆或者说小顶堆实现。在js中并没有提供类似于Java中的工具类PriorityQueue的工具方法,这里需要自己去模拟。。。
一日一练: 平衡二叉树
思路 对每个节点判断器左右子树高度差是否不超过1。 对一个节点,高度的计算方法:深度优先,有子节点就在总数上+1 从根节点开始,计算每个节点(深度遍历)的左右节点的高度,然后比较值。。。
一日一练:层序遍历
二叉树的层序遍历就是优遍历该层所有节点,然后再遍历下一层。如下图: 如上图所示,二叉树:1-2-3-4-5-6-7的层序遍历顺序为1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 。。。
一日一练
1. N 叉树的前序遍历 如果熟悉二叉树的前序遍历,☞ 二叉树的前序遍历。N叉树也是一样的思路。只不过将左子树和右子树的递归访问改成了对chidren的递归访问。 2. 翻转二叉树。。。
一日一练:二叉树最大宽度
思路 深度优先 + 递归 如上图所示,按照满二叉树给每个节点标注位置: 设置根节点为1,左节点为parent * 2,右节点有parent * 2 + 1 那么此时可以通过每层的。。。
一日一练: 树的子结构
思路 深度优先扫描二叉树A,找到值与B的根节点的值相同的节点 找到之后:利用验证函数,去比对此时A的左右子节点是否与B的左右子节点的值完全相同 对比过程中只要出现不相同。。。
一日一练: 完全二叉树的节点个数
递归:深度优先遍历 对于每个节点,先去计算他的子节点的个数,直到叶子节点 叶子节点的子节点数量为0,他本身以及子节点总数量为1 队列:广度优先遍历 先判断当前节点是否有子节点,如果有将他们入队。。。
一日一练:从前序与中序遍历序列构造二叉树
☞ 首先要知道前中序遍历是什么? 如果一个二叉树只有3个节点,根节点1,左节点2,右节点3,那么先收集根节点的结果,然后处理左子节点的结果,再右子节点,即[1, 2, 3],此时的遍历为前序遍历。。。
一日一练:第k个语法符号
思路 从上图可以看出,下层中的值是由上层的0或者1生成的。具体在下层中的值是0还是1由两个因素决定: 上层是0还是1 下层的位置的奇偶性 上层是0 位置为奇数:下层值为: 0。。。
一日一连:分隔链表
思路 获取链表总长度count 用count与k计算出每组需要放入的节点的平均数量,但是因为有可能有多余节点,所以前部分的数量可能比后面的数量多1。比如链表长度为10,分隔数量为3。。。
一日一练:设计链表
> 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。。。
一日一练: 重排链表
解题思路 找中间节点 快慢指针 总长度 / 2 翻转后半部分的链表 前半部分与后半部分逐一拼接。。。
一日一练: 两数相加II
解题思路:翻转链表 + 逐位相加 将两个链表反转 从头开始每个节点依次相加,当和大于10时,要保存进位到一下次的相加;创建新节点来保存和,同时与上一次的和节点相连接 当两个节点都为null时。。。
一日一练: 表现良好的最长时间段
解题思路: 将hours中大于8小时的天映射成1,等于小于的8映射成-1,以[9,9,6,0,6,6,9]为例,得到数组[1, 1, -1, -1, -1, -1, 1] 题目要求劳累的天。。。
单调栈
栈 栈是一种抽象的数据类型,只准许在数据类型的一端加入或者移除数据(Last In First Out 后进先出)。在javascript世界中,一般用数组去模拟或者实现栈。 单调栈。。。
一日一题: 返回倒数第 k 个节点
1. 第一种思路:计算总长度 很容易想到,先扫描一遍求出链表的总长度,然后算出正向的位置,再用一次遍历完成节点的定位。 2. 第二种思路:双指针 先将第一个指针从头节点出发,移动k个节点。。。
一日一练:函数的独占时间
这道题需要缓存当前正在执行的函数,用到栈。维护一个调用栈,在调用其他函数或者当前函数调用结束时更新栈。 遇到start时,将函数入栈,表明调用开始;在遇到end时,需要将栈顶函数弹出,表明调用结束。
一日一练: 基本计算器
这道题还是栈的使用。 思路: 遇到 +、 -、 *、 /,先缓存这些运算符 如果不是运算符,则收集字符串 根据当前的运算符以及数字 +:将字符串转成数字压入栈中 -:将字符串转成数字。。。
一日一题:验证二叉树的前序序列化
栈在解决字符串的配对问题上有奇效。比如移除无效的括号,栈匹配等等。。。如果把节点及左右节点当成一组,也可以用类似的匹配思路去解决。。。
下一页