首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
每日算法
linyv
创建于2022-11-29
订阅专栏
发现问题--->思考问题--->解决问题--->提升自我
暂无订阅
共126篇文章
创建于2022-11-29
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
权重生成随机数——前缀和, 二分
代码 计算前缀和,前缀和自带的当前值与上一个值的区间从而来表示权重 例如: 3. 然后使用 rand.Intn 和 sort.SearchInts 来进行生成随机数和判断随机数应该插入哪个位置,即落入
最大的异或
位运算 将每一个具体的 位 进行试探 从最高的一位开始,到最高的两位,到前三位 每次都将 nums 的前几位计入 map 中 这样只需要将 map 中的每一个元素 与 我们假设存在的 xNext 异或
和最小的 K 个数对——优先队列,堆
用堆实现优先队列 我们可以先将 nums1 的前 k 个索引数对加入序列,然后每次去除元素时,我们只需要将 nums2 的索引增加即可,这样就可以很好的避免重复加入元素的问题 二分查找:
***数据流的第 K 大数值——标准库的应用
顶级代码 匿名字段和内嵌结构体 结构体可以包含一个或多个 匿名(或内嵌)字段,即这些字段没有显式的名字,只有字段的类型是必须的,此时类型就是字段的名字。匿名字段本身可以是一个结构体类型,即 结构体可以
值和下标之差都在给定的范围内——桶排序
桶排序思想 + 滑动窗口 按照元素的大小进行分桶,桶的大小为 t+1 如果两个元素属于同一个桶,两个元素显然符合条件 如果两个元素属于相邻的桶,则需要验证两个元素是否差值不超过 t 如果两个元素既不属
向下的路径节点之和——DFS 前缀和
DFS 前缀和 注意下面的代码中 111 行代码 不要和 222 行代码互换位置,因为我们所求的是当前节点如果计入答案的情况下,是否在之前的节点中存在相对应的前缀和,如果我们提前将当前节点存入 map
二叉树每层的最大值——dfs,bfs
DFS dfs 的时候记录一下当前的深度,深度即为我们 ans 的下标,如果当前深度 等于 ans 长度,代表当前深度我们还没有加入,append进去,如果不等于,则已经加入,维护一下最大值 BFS
往完全二叉树添加节点——二进制表示
我们将完全二叉树的节点用二进制表示,根节点就是 1, 它左节点就是 10, 它的左节点是 11, 它的左节点的左节点就是 100, 右节点是 101, 右节点的左节点 110, 依此类推,我们只需要记
直方图最大矩形面积
代码1: 每一个柱子如果我们知道它左边第一个比它小的位置,和右边第一个比它小的位置,那么两个位置中间的距离再乘以柱子的高便是柱子的面积 我们遍历每个柱子的高便轻易得到最大面积 至于柱子的左右边界,我们
后缀表达式
逆波兰表达式主要有以下两个优点: 去掉括号后表达式无歧义,上式即便写成 1 2 + 3 4 + * 也可以依据次序计算出正确结果。 适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算
外星语言是否排序
代码: index 数组按照指定的字典序给字符带上权重 next————continue next,使带有 next 标签的 for 执行 continue 第一层 for 负责遍历第几个字符串 第二
插入,删除和随机访问都是 O(1) 的容器
代码: 想要插入,删除都是 O(1) 的话,使用 map 就好,但 map 做不到随机返回,切片可以做到随机返回,所以结构体可以是一个 map 和 切片的组合 其中 map 记录当前值和 它在切片里的
展开多级双向链表
展开图: 代码: dfs 输入节点,输出能到达的最深处,也就是能往下就往下 代码实现就是,如果存在 child,就继续 dfs(child) ,得到子问题的 last 节点 然后就是节点指向改变,涉及
重排链表
快慢指针找中值 从中值处分成两个链表 反转链表 合并链表 代码1: 代码 1 并不正确,原因在 mid 的确定,我们需要使反转的那个链表属于短的那一个,这样可以省去很多问题 代码2:
回文子字符串的个数
代码1: 暴力 枚举出所有的子串,然后再判断这些子串是否是回文; 代码2: 枚举每一个可能的回文中心,然后用两个指针分别向左右两边拓展,当两个指针指向的元素相同的时候就拓展,否则停止拓展。 回文中心又
含有所有字符的最短字符串——滑动窗口
代码1: 没用 map 代码2: 用 map 可能 map 遍历速度慢的原因,所以导致使用了 map 反而使得运行速度更慢了 而且因为数据测试的比较小,导致虽然使用 map 进行了空间优化,只记录我们
石子游戏——记忆化搜索
代码: 本题很明显要用记忆化搜索或者动态规划来求解,如果直接使用动态规划的话,我们要想清楚有哪些子状态需要存储。 首先一定要存储的是取到某一个位置时,已经得到的最大值或者后面能得到的最大值,但是光有位
字符串中的变位词——滑动窗口
代码1 滑动窗口 用长度为26的数组来记录各个单词的数量,然后直接比较数组即可 滑动窗口,新加的字母,删除队尾的字母 代码2: 滑动窗口优化 因为代码 1 中每次移动我们只改变了两个字母,但我们每次比
二维子矩阵的和——二维前缀和
代码1: 一维前缀和 记录每一行的前缀和,在求值时将各行相加 代码2: 二维前缀和 直接得到当前节点对于(0,0)位置所包裹的矩阵和,在求值时进行运算,即可得到答案
和为 k 的子数组——哈希前缀和
遍历数组,并用哈希存储目前为止的前缀和以及个数,即如果重复则加一,因为是目前为止的前缀和,所以哈希中保存的前缀和皆在当前所求前缀和的前面,所以哈希的无序性也无关紧要 拿当前的前缀和减去 k 然后去 m
下一页