![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
code 刷题 总结&记录
文章平均质量分 53
记录了一些算法学习、刷题过程中的收获与心得
Alkali!
本科:NUAACCST16191
硕士:SEUCSE220
展开
-
暑期代码每日一练Day1:415. 字符串相加
题目意思是给你两个纯数字 字符串(表示的是一个有意义的正整数),让你算出这两个字符串表示的数字的和,最后返回以字符串表示的结果,其中的过程不能直接将初始给定的两个字符串直接转化为数字。原创 2023-07-17 16:58:39 · 130 阅读 · 0 评论 -
AcWing 136. 邻值查找 Java Treemap应用
的数开始处理,往前找,找到与它的差的绝对值最小的数和它的下标,如果同时有好几个数满足差的绝对值最小,那么找这个数本身最小的。这里我们长期需要维护,或者说,给你一个数,你要找到比它小的数中最大的数,和比它大的数中最小的数,也就是它的邻近值。啊哦,结果发现TLE了,因为给你的数据量非常大,会有很多次的输出,规模大概在。,可以轻松实现对临界值的维护。这时候尝试着优化一下输出试试。题意是给你一个序列,标号从。OK,过了所有的样例。原创 2022-10-17 13:19:40 · 180 阅读 · 0 评论 -
用两个栈实现一个队列 思想以及Java实现代码
定义两个栈,s1和s2。原创 2022-10-15 23:26:31 · 451 阅读 · 0 评论 -
AcWing 778. 字符串最大跨距 语法题
【代码】AcWing 778. 字符串最大跨距 语法题。原创 2022-10-14 15:55:26 · 213 阅读 · 0 评论 -
AcWing 777. 字符串乘方 模拟枚举
由该字符串,可以经过任意次数的拼接,得到原字符串,且不存在比该原子串更小的串。题目给你一个字符串,让你找出生成该字符串的原子串是什么。s的长度不超过100,因此我们可以直接暴力枚举。一个字符串的原子串怎么定义?原创 2022-10-14 14:51:01 · 125 阅读 · 0 评论 -
平方矩阵 I II III 题解
的差值,相应位置的值也在改变。每个点处的值为该位置。原创 2022-10-10 09:50:58 · 311 阅读 · 0 评论 -
leetcode 55.跳跃游戏 贪心
每次取最大跳跃步数(取最大覆盖范围),最后看最大覆盖范围,看是否能到终点,可以用贪心的方法解决这个问题。如果一个位置能够到达,那么这个位置左侧所有位置都能到达。贪心的本质是选择每一阶段的局部最优,从而达到全局最优。,在往右移动的过程中,不断维护能跳跃到的最大下标。时,一定是在终点之前停下了,且不能再往右跳。,这个值大于等于 最后一个位置的下标。为起点,它能跳跃到的最大下标为。,那么最后一个位置可以到达。原创 2022-09-07 17:29:14 · 750 阅读 · 1 评论 -
leetcode 139.单词拆分 BFS
【代码】leetcode 139.单词拆分 BFS。原创 2022-09-03 21:07:53 · 168 阅读 · 0 评论 -
leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 二分法
这是道二分法的裸题,直接二分去做就行了。原创 2022-08-22 17:39:55 · 160 阅读 · 0 评论 -
leetcode 33.搜索旋转排序数组 二分法
拿示例来看,我们从 6 这个位置分开以后数组变成了 [4, 5, 6] 和 [7, 0, 1, 2] 两个部分,其中左边 [4, 5, 6] 这个部分的数组是有序的,其他也是如此。无序部分再一分为二,其中一个一定有序,另一个可能有序,可能无序。这启示我们可以在常规二分查找的时候查看当前 mid 为分割位置分割出来的两个部分。将数组一分为二,其中一定有一个是有序的,另一个可能是有序,也能是部分有序。,因为我们能够根据有序的那部分判断出。将数组从中间分开成左右两部分的时候,哪个部分是有序的,并。原创 2022-08-22 16:54:35 · 216 阅读 · 0 评论 -
leetcode 43.字符串相乘 模拟乘法
上游走,计算乘积,同时将乘积叠加到。可以说是非常大,所以几乎不可能说先将。整个计算过程大概是这样,有两个指针。必须对整个乘法的过程进行模拟。原创 2022-08-22 10:23:08 · 92 阅读 · 0 评论 -
leetcode 93. 复原 IP 地址 暴力模拟解
即可,可以枚举下标,点的位置即为所枚举到的下标的后一个位置。一个IPv4地址,有3个点,这里直接。原创 2022-08-20 23:44:50 · 174 阅读 · 0 评论 -
leetcode 20.有效的括号 栈
注意一下,如果字符串长度为1,则肯定不符合条件,返回false。原创 2022-08-18 14:15:02 · 241 阅读 · 0 评论 -
中心扩展法求解 leetcode 647.回文子串 & leeccode 5.最长回文子串
想象一下单个字符的哪个中心点扩展可以得到这个子串?所以中心点不能只有单个字符构成,还要包括两个字符,比如上面这个子串。看起来像是和字符串长度相等,但你会发现,如果是这样,上面的例子永远也搜不到。这个是确定了一个中心点后的寻找的路径,然后我们只要寻找到所有的中心点,问题就解决了。先求出最大的回文子串长度,再在求回文子串的过程中,求出最长长度的回文子串。这是一个比较巧妙的方法,实质的思路和动态规划的思路类似。在前面求一个字符串的所有回文子串的基础上,改良一下。,所以是回文串,继续扩散,同理。...原创 2022-08-18 13:51:27 · 101 阅读 · 0 评论 -
leetcode 210. 课程表 II 拓扑排序
代码】leetcode 210. 课程表 II 拓扑排序。原创 2022-08-16 17:02:30 · 110 阅读 · 0 评论 -
leetcode 1094. 拼车 差分
很简单的差分题。原创 2022-08-16 15:38:04 · 162 阅读 · 0 评论 -
leetcode 122. 买卖股票的最佳时机 II 贪心
代码】leetcode 122. 买卖股票的最佳时机 II 贪心。原创 2022-08-16 15:05:52 · 85 阅读 · 0 评论 -
leetcode 121. 买卖股票的最佳时机 贪心
因为股票就买卖一次,那么贪心的想法很自然就是。,那么得到的差值就是最大利润。原创 2022-08-16 14:45:12 · 112 阅读 · 0 评论 -
leetcode 437.路径总和 III 前缀和+哈希表优化
那么sum很有可能就爆了int,所以得开。二叉树的节点个数的范围是。而int的范围为2×10。原创 2022-08-16 11:10:41 · 110 阅读 · 0 评论 -
leetcode 1248.统计【优美子数组】 前缀和+哈希表优化
只是560题中前缀和是真的存储的前缀和,本题前缀和存储的是。这题的思路可以完全借鉴。原创 2022-08-15 16:43:23 · 211 阅读 · 0 评论 -
leetcode 560.和为K的子数组 前缀和+哈希表优化
的计算只与前一项的答案有关,因此我们可以不用建立。的连续子数组个数,我们需要统计符合条件的下标。最后的答案即为所有下标结尾的和为。的连续子数组个数时只要统计有多少个前缀和为。,请你统计并返回 该数组中和为。出现的次数,从左往右边更新。的连续子数组的个数。这个子数组的和恰好为。需要注意的是,从左往右。.........原创 2022-08-15 16:12:59 · 193 阅读 · 0 评论 -
leetcode 1208.尽可能使字符串相等 滑动窗口
由于 \textit{diff}diff 的的每个元素都是非负的,因此可以用滑动窗口的方法得到符合要求的最长子数组的长度。遍历结束之后,即可得到符合要求的最长子数组的长度,即字符串可以转化的最大长度。的子数组的开始下标和结束下标,满足子数组的元素和不超过。的值,判断子数组的元素和是否大于。滑动窗口的思想是,维护两个指针。在移动两个指针的过程中,更新。另外还要维护子数组的元素和。,因此可以创建一个长度为。之后,问题转化成计算数组。,并决定应该如何移动指针。......原创 2022-08-14 16:22:45 · 159 阅读 · 0 评论 -
leetcode 1004.最大连续1的个数 III 滑动窗口
我们只需要知道 left 和 right 作为下标在前缀和数组中对应的值,因此我们只需要用两个变量 lsum 和rsum 记录 left 和right 分别对应的前缀和即可。在 right 向右移动的过程中,我们同步移动left,直到 left 为首个(即最小的)满足 上式的位置,此时我们就可以使用此区间对答案进行更新了。我们继续观察上式,由于前缀和数组 P 是单调递增的,那么 上 式的右侧 P[right]−k 同样也是单调递增的。随着 right 的增大,满足 上式的最小的 left 值是单调递增的。.原创 2022-08-14 11:30:47 · 228 阅读 · 0 评论 -
leetcode 1282.用户分组 哈希表
遍历一遍数组,将信息保存在哈希表上,哈希表表头为。每当链的长度等于组的大小时,存入答案一次。原创 2022-08-14 10:38:50 · 151 阅读 · 0 评论 -
leetcode 209.长度最小的子数组 滑动窗口
在此过程中同样更新子数组的最小长度。在每一轮迭代的最后,将。,则更新子数组的最小长度(此时子数组的长度是。分别表示子数组(滑动窗口窗口)的。原创 2022-08-11 11:27:01 · 232 阅读 · 0 评论 -
leetcode 3.无重复字符的最长子串 滑动窗口
其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列!一直维持这样的队列,找出队列出现最长的长度时候,求出解!这道题主要用到思路是:滑动窗口。...原创 2022-08-11 10:33:19 · 226 阅读 · 0 评论 -
leetcode 684.冗余连接 并查集
从后往前依次遍历每条边,对于每条边,模拟它被删去时的并查集情况,判断是否构成一个树,构成则成功返回,不构成则继续往前遍历。个点之间的所有边,然后去。个点是否构成一棵树?原创 2022-08-11 09:39:22 · 128 阅读 · 0 评论 -
leetcode 547.省份数量 并查集
代码】leetcode 547.省份数量 并查集。原创 2022-08-10 17:57:47 · 201 阅读 · 0 评论 -
Leetcode 200.岛屿数量 BFS
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。直接BFS求就完事了。...原创 2022-08-10 15:27:10 · 131 阅读 · 0 评论 -
leetcode 85.最大矩形 单调栈应用
可以按行为基线,划分成四个84题中的柱状图。的二维二进制矩阵,找出只包含。的最大矩形,并返回其面积。原创 2022-08-10 14:42:44 · 160 阅读 · 0 评论 -
leetcode 84.柱状图中最大的矩形 单调栈应用
这里我们利用单调栈的思想就行,可以实现。是以i 为中心,向左找第一个小于。位置最大面积是什么?那么如何找到每个位置。原创 2022-08-10 12:06:54 · 152 阅读 · 0 评论 -
Leetcode 739.每日温度 单调栈
非常直接的单调栈问题。原创 2022-08-09 14:20:27 · 148 阅读 · 0 评论 -
leetcode 503.下一个更大元素II 单调栈
代码】leetcode 503.下一个更大元素II 单调栈。原创 2022-08-09 11:41:20 · 283 阅读 · 0 评论 -
Leetcode 23.合并K个升序链表 链表归并合并
大循环的控制思路是一直归并,直到原来的几条链表上的元素被拿空。这两种情况归并完都是NULL,直接返回NULL。给你一个链表数组,每个链表都已经按升序排列。直接按照归并排序的思路来归并每一条链表。请你将所有链表合并到一个升序链表中,其他情况,我们都用归并的方法归并。...原创 2022-08-08 16:41:02 · 216 阅读 · 0 评论 -
leetcode 240.搜索二维矩阵II 分治思想
从该起始点,可以分治地去查找待查找地点。主对角线上左上角和右下角不符合条件,因为。这道题的关键在于得找到特殊位置的。原创 2022-08-08 15:32:11 · 179 阅读 · 0 评论 -
leetcode 169.多数元素 多数元素算法
如果一个元素的出现次数大于所有元素个数的一半,那它必然是这所有元素中出现次数最多的元素。这是道经典的算法题,求数组里出现次数大于数组长度一半的元素的值。这是道很经典的算法问题,可以作为模板使用,直接背过。...原创 2022-08-08 10:09:42 · 96 阅读 · 0 评论 -
leetcode 70.爬楼梯 动态规划
你有多少种不同的方法可以爬到楼顶呢?级台阶跨两级台阶到第二级,也是一种方案,所以。的时候,通过状态转化方程,可以知道。:爬到第n阶台阶不同的方法的数量。级台阶跨一级这一种可能,所以为。,这是通过反推,从而赋予意义。:第一级台阶只可能是由第。阶台阶不同的方法的数量。阶台阶不同的方法的数量。阶台阶不同的方法的数量。.........原创 2022-08-07 23:30:37 · 113 阅读 · 0 评论 -
leetcode 112.路经总和 递归
代码】leetcode 112.路经总和 递归。原创 2022-08-08 00:38:32 · 73 阅读 · 0 评论 -
AcWing 779. 最长公共字符串后缀 模拟 JavaScript代码
给出若干个字符串,输出这些字符串的。原创 2022-08-05 17:22:10 · 133 阅读 · 0 评论 -
AcWing 772. 只出现一次的字符 JavaScript中将字符转换为十进制数
JS中没有字符之间的减法操作可言,因为JS的原子单位不是字符,就直接是字符串,这里我们可以先把字符转换成阿斯克码十进制的值,再作减法。原创 2022-08-03 17:05:55 · 143 阅读 · 0 评论