首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
一日一练
Tonyzz
创建于2022-04-11
订阅专栏
算法小白的刷题之路~
暂无订阅
共62篇文章
创建于2022-04-11
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
一日一练:二叉树中的最大路径和
三个节点 对于这个二叉树,最大路径和 要比较六个值 根节点 -> 2 左节点 -> -4 右节点 -> 3 根节点 + 左节点 -> -2 根节点 + 右节点 -> 5 左节点 + 根节点 + 右节点
一日一练:二叉搜索树的最近公共祖先
因为是二叉搜索树,所以两个节点的公共祖先节点会满足: 祖先节点的值大于较小节点的值且小于较大节点的值。又因为一个节点也可以是他自己的祖先节点,所以值相等也是符合的。 递归查找
一日一练:对称二叉树
思路: 从根节点开始对比,如果只有根节点那么肯定是对称的 然后判断根节点的左节点left1与右节点right1是否存在且值相等,如果不满足,即不是对称,退出比较;如果还是满足。。。
一日一练:有效的回旋镖
这是一道数学题。 x,y 坐标 首先排除三点相同的情况 然后判断是否可以连成一条线:将 其中一点平移到原点,其他两个点在x,y轴上移动相同的距离,然后计算这两个点与原点形成的角度是否相同。。。
一日一练:爱吃香蕉的珂珂
思路: 最慢肯定是一小时吃一根,时间为 所有香蕉数量总和 因为吃完一堆之后一个小时之内不能再吃更多香蕉,所以最快吃完的速度为:一个小时吃掉数量最大的那堆香蕉,即piles中的最大值 现在想查找。。。
一日一练:我的日常安排表I
维护一个数组,每次有新的日程安排时,先判断当前日程是否会产生重复日程:如果产生直接返回false;不产生的话,加新日程加入数组中,同时返回true 判断方法的话:用当前日程时间。。。
一日一练: 在圆内随机生成点
开始的想法是暴力求解: 先通过 x 和 r 以及随机数生成 随机的 横坐标的值 在通过 横坐标 以及 半径和圆心的位置 确定 有效的 y的值,然后产生随机数 可能能实现,但是实现太繁琐。。。拒绝采样
一日一练
1. 二叉树的右视图 主要在于遍历的时候给节点加上对应的层级,然后扫描的时候确保每一层的最右侧节点最后被扫描到。可以使用前序或者中序遍历。 2. 相同的树 从根节点开始,递归标记当前节点及其。。。
一日一练:二叉搜索树中第K小的元素
运用二叉搜索树中序遍历的特性。结果数组从小到大排列。 中序遍历二叉树 结果数组取第k-1项。。。。。
一日一练:合法二叉搜索树
首先得知道二叉搜索树: 二叉搜索树是指一棵空树或者具有下列性质的二叉树 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若任意节点的右子树不空。。。
一日一练:移除石子的最大得分
为了得到最大分数,每次都从三堆中拿出数量较大的两堆石子。可以使用最大堆。每次取出较大的两堆,减1之后判断是否为0,不为0继续加入堆中;继续下一次取最大两堆。。。
一日一练:超级丑数
这道题跟丑数II的基本思路是一致的,这道题是在其基础上做了升级。丑数II中primes是固定的2, 3, 5,这道题的primes是动态变化的。 还是指针的思路,只不过这里的指针数量取决于。。。
一日一练:丑数II
这道题自我感觉更多的是编程技巧。 因为只包含质因数2,3,5,所以结果肯定是这些因数的乘积。这里比较难的是怎们可以让乘积可以从小到大依次被计算。这里使用三指针。。。
一日一练: 积压订单中的订单总数
这道题在于题目的理解。这里有两种未执行的积压订单,销售订单sell 和 采购订单buy。提交订单时,如果当前订单: 是采购订单,去积压的销售订单中查找价格最低的 是销售订单。。。
一日一练:连续中值
这里需要实现三个方法, 构造函数 MedianFinder 实例方法 addNum 实例方法 findMedian 主要实现的是addNum方法,如何在加入新num之后维护新的队列。 。。。
一日一练:前K个高频单词
前K个高频单词,还是可以使用堆排序: 最大堆。 统计单词出现的次数 所有单词及数量放入堆中排序: 如果出现次数不一致,用数量最比较,大的排在前面。用数量相减即可。。。
一日一练:设计推特
用map来存储每个user的tweets以及他关注的的follweeIds postTweet方法:如果当前userId已存在map中,往tweets里再次添加,如果不存在,则初始化当前。。。
一日一练:数组中的第K个最大元素
思路:排序 最容易想到的是:将数组从大到小排序,然后取第k个值。可以直接使用js提供的sort方法 sort方法内部是用插入排序或者快排,前者的时间复杂度为O(n^2)后缀为O(nlogn)。。。
一日一练:最小的K对数字
虽然这里的两个数组都是升序排列,但是两个数组的数对和的大小是不确定的,所以用暴力扫描是无法实现的。最小或者最大的K个值一般都用最小堆或者最大堆。 这里可以用最小堆。需要注意的: 堆内不存数对和的大小,
一日一练:数据流中的第 K 大元素
最小堆 如果将数据流中的前k大元素存储在最小堆中,因为堆顶是最小值,所以堆顶元素就是当前数据流中的第k大元素。 可以在之前最小堆的实现基础上扩展一下。👉 最小堆实现 之前的实现可以无限存储。。。
下一页