![](https://i-blog.csdnimg.cn/direct/ffbd13e76c1c4617ad0709ffd547c54a.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
刷题与算法
文章平均质量分 68
我的LeetCode刷题与算法
深夜无眠T
记录我的学习之旅
展开
-
LeetCode——被管绕的区域
在搜索时可以使用深度优先搜索,从边界搜索到图中所有的符号,最后根据标记所得将所有的标记为false的变为”X“,这样我们就成功替换了所有被包围的”O“。因此我们就可以从整个图的边界开始查找,找到所有与边界”O“相连的”X“,除了这些”O“,把剩下的全部”O“都变成”X“。题目中的意思就是指将数组中被”X“包围”O“全部变成”X“,而只有和边界”O“相连的”O“才不会被”X“包围。在上图中,底部的区域没有被捕获,因为它在 board 的边缘并且不能被围绕。原创 2024-07-19 15:21:32 · 70 阅读 · 0 评论 -
LeetCode-最大平均值和的分组
这道题是很明显是要使用动态规划,因此我们使用二维数组dp[i][j]来表示一个数在区间 [0,i−1]被切分成j个子数组的最大平均值和。nums 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9 + (1 + 2 + 3) / 3 + 9 = 20.我们也可以把 nums 分成[9, 1], [2], [3, 9].这样的分组得到的分数为 5 + 2 + 6 = 13, 但不是最大值.数组中的每一个数进行分组,并且分数不一定需要是整数。今天做的是一道动态规划的问题,还需要用到前缀和。原创 2024-04-09 20:18:52 · 189 阅读 · 0 评论 -
LRU的原理与实现(java)
LRU的英文全称为Least Recently Used,即最近最少使用。它是一种内存数据淘汰算法,当添加想要添加数据而内存不足时,它会优先将最近一段时间内使用最少的数据淘汰掉,再将数据添加进来。原创 2024-04-06 22:59:12 · 631 阅读 · 0 评论 -
LeetCode-统计完全连通分量的数量
给你一个整数n。现有一个包含n个顶点的图,顶点按从0到n - 1编号。给你一个二维整数数组edges其中表示顶点ai和bi之间存在一条边。返回图中的数量。如果在子图中任意两个顶点之间都存在路径,并且子图中没有任何一个顶点与子图外部的顶点共享边,则称其为。如果连通分量中每对节点之间都存在一条边,则称其为。3如上图所示,可以看到此图所有分量都是完全连通分量。原创 2024-04-01 19:55:52 · 929 阅读 · 0 评论 -
LeetCode547——省份数量(并查集)
假如在前面的合并动作中,先将第一个节点和第二个节点合并了,然后想再合并第三个节点,也就是parent[0]=0,parent[1]=0,parent[2]=1,那么在寻找下标为2也就是第三个节点时就会通过递归将parent[2]的值设为parent[1]的值,也就是0,这样就找到了第三个节点的根节点。parent[0]=0,parent[1]=0,就代表第一个节点的根节点为它本身,第二个节点的根节点的是第一个节点,即代表两个节点相连了。该题的关键在于理解理解find方法,理解是如何找到根节点并进行合并的。原创 2024-03-27 23:37:39 · 494 阅读 · 0 评论 -
单调栈(LeetCode-下一个更大元素)
什么是单调栈?单调栈的定义其实很简单,所谓单调栈就是指一个单调递增或是单调递减的栈。那单调栈有什么用呢?单调栈通常用来在一串数字(例如数组)中,找到某个数字的左侧或是右侧最近的大于或小于这个数字的数。那么是如何实现的呢?如果想要在一个数组中找到一个数字右侧大于它本身的第一个数,就可以使用一个单调递增的栈来实现。原创 2024-04-07 00:31:08 · 1219 阅读 · 0 评论 -
LeetCode-零钱兑换II
每日一题,今天刷到的是零钱兑换,总体思路是使用动态规划。原创 2024-04-06 00:12:50 · 750 阅读 · 0 评论 -
LeetCode——蜡烛间的盘子(前缀和+预处理)
每日一题,今天抽到的题目是蜡烛间的盘子,题目要求如下:给你一个长桌子,桌子上盘子和蜡烛排成一列。给你一个下标从开始的字符串s,它只包含字符'*'和'|',其中'*'表示一个'|'表示一支。同时给你一个下标从开始的二维整数数组queries,其中表示对于每个查询,你需要找到在的盘子的。如果一个盘子在左边和右边至少有一支蜡烛,那么这个盘子满足在。[3, 8]"*|| ** |"2请你返回一个整数数组answer,其中answer[i]是第i个查询的答案。[2,3]原创 2024-04-03 19:30:07 · 654 阅读 · 0 评论 -
LeetCode-2202 K次操作后最大的顶端元素(JAVA)
而当k小于栈的大小时,我们可以得到k-1前的所有元素,和第k+1个元素(即所有的操作都在弹出元素。这道题让我们操作一个栈,我们可以将元素弹出或是将弹出的元素的再次压入栈,每次弹出或压入算一个操作,求解出经过k次操作后可以得到的最大元素。我们经过k次操作后有几种情况,当k的值大于栈的大小时我们可以得到栈中所有的元素,因此直接遍历栈就可以得到最大值。还有一种特殊情况,当栈中只有一个元素,且操纵数为奇数时,我们无论怎么操纵都会将唯一的元素弹出,因此此时返回-1.次操作以后,栈一定为空,请你返回。原创 2024-03-31 23:59:24 · 324 阅读 · 0 评论 -
LeetCode-使数组为空的最小操作数
每日一题。今天刷的是一道有关于数学的题。原创 2024-04-19 20:36:09 · 436 阅读 · 0 评论 -
LeetCode-最大子数组和
每日一题今天刷到的是一道利用动态规划解决的题目。原创 2024-04-18 23:36:18 · 330 阅读 · 0 评论 -
二叉树的创建和遍历(java)
二叉树是一种常见的树形数据结构,它由节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。这些节点以层次结构的方式组织在一起,每个节点都有一个父节点,除了根节点外,每个节点都有一个唯一的父节点。二叉树常用于实现搜索、排序和数据组织等算法。原创 2024-04-16 10:46:10 · 733 阅读 · 0 评论 -
LeetCode-去除重复字母(单调栈)
每日一题今天刷到一个有意思的题是去除重复字母,这是一道中等难度的题,当刚读到题目时,我还在诧异一个去重为什么是中等难度?当正式读完提后就明白了,这道题不仅要求去重,还要求将这样就有点麻烦了那么像这种和左右比大小的题很大概率上都可以使用单调栈,对于这道题来说还需要一点贪心的思想。那么话不多说,我们看题。原创 2024-04-12 17:16:41 · 661 阅读 · 0 评论 -
LeetCode-最长递增子序列
每日一题今天继续来练习动态规划。原创 2024-04-20 20:02:10 · 255 阅读 · 0 评论 -
LeetCode-二叉树修剪
每日一题今天遇到的题比较简单,是一道二叉树的题。原创 2024-04-17 19:43:54 · 465 阅读 · 0 评论 -
用java实现单链表的头插,尾插和反转
定义了节点中的值,节点的下一个节点,和一些基本的方法。int val;原创 2024-04-13 23:55:27 · 231 阅读 · 0 评论 -
LeetCode-全排序(回溯算法)
每日一题今天写了一道需要用到回溯的题。原创 2024-04-13 15:55:52 · 252 阅读 · 0 评论 -
LeetCode-冗余连接(并查集)
每日一题,今天又刷到一道使用并查集来解决的问题,再次加深了一遍自己对并查集的印象和使用。原创 2024-04-10 14:06:11 · 345 阅读 · 0 评论 -
LeetCode-最大数
每日一题今天刷到是一个需要自定义排序的题。原创 2024-04-14 19:57:06 · 178 阅读 · 0 评论 -
算法——滑动窗口
滑动窗口算法是一种用于解决数组或字符串中的子数组或子串问题的有效算法。它通过使用一个双指针来维护一个滑动窗口来在线性时间内解决问题,通常用于解决一些需要在连续子序列上进行操作的问题,,比如最大值、最小值、平均值、子数组和子串的和等。原创 2024-04-16 00:10:57 · 1307 阅读 · 1 评论 -
LeetCode-旋转链表
每日一题,很久没做链表的题了,今天做l一道相对简单的力扣中等难度题。原创 2024-04-28 22:44:25 · 235 阅读 · 0 评论 -
LeetCode—和为K的子数组(前缀和)
借助官方题解中的一张图,在遍历结束后,会得到所有的前缀和及其出现的次数,在不断的遍历中pre-k会不断更新,在将其和前缀和去匹配,如果相等了count就加一。例如,求第3到5个数的和,就可以转化为前5个数的和减去前2个数的和,两个前缀和相减就可以来表示一个连续子数组的和。但是,暴力求解虽然简单,但是时间消耗是很大的,时间复杂度是n的平方。因此我们可以使用另外一种方式来求解此题,可以思考一下,题目中让求的说连续的子数组和,因此最简单的一种方法就是暴力求解,找到所有的子数组,计算和是否为K。原创 2024-07-10 11:35:32 · 187 阅读 · 0 评论 -
LeetCode-非递增子序列
每日一题今天刷的依旧是一道中等题,不过感觉今天这道题是中等难度里面比较难的题了,思考了很长时间。过程感觉比较难以理解。原创 2024-04-24 20:35:08 · 199 阅读 · 0 评论 -
LeetCode-网络延迟时间(Dijkstra算法)
每日一题今天刷到一道有关的图的题,需要求单源最短路径,因此使用Dijkstra算法。原创 2024-05-02 22:05:06 · 1181 阅读 · 0 评论 -
LeetCode-电话号码的字母组合(回溯)
每日一题今天刷到的是一道利用回溯来解决的题,不过稍微有点复杂,并且我也有一段时间没有做回溯了,所有在解题时也是思考了一段时间。原创 2024-04-21 22:32:33 · 554 阅读 · 0 评论 -
LeetCode-竖直打印单词
每日一题今天依旧是一道力扣的中等难度的题,但是个人感觉这道题算是中等难度里比较简单的一道题。在做的时候也很顺利,最后运行地也很快。原创 2024-04-22 21:31:04 · 539 阅读 · 0 评论 -
LeetCode-移除后集合的最多元素数(java)
移除后,数组变为 nums1 = [1,4,5] 和 nums2 = [2,3,2]。移除后,数组变为 nums1 = [1,2,3] 和 nums2 = [4,5,6]。对此,我们利用添加的思想,先得出两个数组中各自具有的数字,也就是不在这两个数组交集之中的数字,先将这些数字添加进集合。此时选完后如果c1+c2原创 2024-07-18 11:45:42 · 340 阅读 · 0 评论