
leetcode
ershiyidian
知之者不如好之者,好之者不如乐之者~~~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LC55.跳跃游戏---能否到达最后一个下标---到达尾部的最小步数---贪心算法
如果可以,返回。原创 2024-08-12 18:29:40 · 495 阅读 · 1 评论 -
链表中间节点---删除倒数第几个节点---相交链表---C++
【代码】链表中间节点---删除倒数第几个节点---相交链表---C++原创 2024-08-12 10:07:30 · 341 阅读 · 0 评论 -
滑动窗口最大值---双端队列---优先队列
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。想要找出当前窗口里面的,自然而然的想法就是,从中选出最大值,这样的复杂度是O(k*n)级别,复杂度有点高。首先滑动窗口滑过所有的元素必然要经历O(n)的时间,这没法调整,所以可以优化的方向在于,即想办法从O(k)优化到O(logk)或者直接优化到O(1)。使用!让窗口移动的过程,维护好队列里面的元素,做到都能马上知道当前窗口的最大值,由于想要做到的级别拿到最大值,那么必须是它的,也就是说我们需要维护一个用来保存队列中。原创 2024-06-14 08:51:34 · 288 阅读 · 0 评论 -
用栈实现队列---C++
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):实现MyQueueint pop()int peek()truefalsesizeis empty。原创 2024-08-11 23:07:47 · 429 阅读 · 0 评论 -
用队列实现栈---C++实现
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(myStack.empty();// 返回 False。的元素,queue2 作为入栈操作的。其中 queue1 用于存储。原创 2024-08-11 22:53:45 · 426 阅读 · 0 评论 -
LCR 041. 数据流中的移动平均值---移动窗口的平均值---队列
给定一个窗口大小和一个整数数据流,根据该滑动窗口的大小,计算滑动窗口里所有数字的平均值。实现sizenextsize// 返回 1.0 = 1 / 1// 返回 5.5 = (1 + 10) / 2// 返回 4.66667 = (1 + 10 + 3) / 3// 返回 6.0 = (10 + 3 + 5) / 3next104。原创 2024-08-11 12:02:58 · 464 阅读 · 0 评论 -
LC18.四数之和
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且的四元组bcd你可以按返回答案。原创 2024-08-10 17:02:38 · 596 阅读 · 0 评论 -
计算素数质数
给定整数n,返回所有小于非负整数n的质数的数量。原创 2024-08-10 11:50:00 · 201 阅读 · 0 评论 -
1190. 反转每对括号间的子串---栈
给出一个字符串s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中包含任何括号。"dcba""iloveu"先反转子字符串 "love" ,然后反转整个字符串。原创 2024-08-10 09:56:28 · 155 阅读 · 0 评论 -
字符串压缩---模拟
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。:"abbccd":"abbccd":"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。原创 2024-08-07 12:01:02 · 360 阅读 · 0 评论 -
LeetCode 14、最长公共前缀---模拟
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。原创 2024-08-03 12:10:31 · 177 阅读 · 0 评论 -
LeetCode 495. 提莫攻击
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。- 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。艾希在第 1、2、4、5 秒处于中毒状态,所以总中毒秒数是 4。秒时对艾希发起攻击,以及一个表示中毒持续时间的整数。当提莫攻击艾希,艾希的中毒状态正好持续。,在新的攻击之后,中毒影响将会在。返回艾希处于中毒状态的。原创 2024-08-03 09:50:41 · 405 阅读 · 0 评论 -
35. 搜索插入位置---二分法
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法。21。原创 2024-07-19 21:02:51 · 224 阅读 · 0 评论 -
LC219. 存在重复元素II
给你一个整数数组nums和一个整数k,判断数组中是否存在两个i和j,满足且。如果存在,返回true;否则,返回false。原创 2024-07-19 11:29:33 · 380 阅读 · 0 评论 -
LC1. 两数之和---哈希表
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。[0,1]因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。原创 2024-07-19 11:18:06 · 370 阅读 · 0 评论 -
LeetCode 337、打家劫舍III ---动态规划DP---DFS
小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵如果,房屋将自动报警。给定二叉树的root。返回,小偷能够盗取的最高金额。7小偷一晚能够盗取的最高金额 3 + 3 + 1 = 7。原创 2024-07-18 22:31:11 · 853 阅读 · 0 评论 -
LeetCode 235、二叉搜索树的最近公共祖先 ---DFS
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]6节点 2 和节点 8 的最近公共祖先是 6。原创 2024-07-18 22:11:14 · 672 阅读 · 0 评论 -
LeetCode 98、验证二叉搜索树---DFS
给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。[1, ]true。原创 2024-07-18 21:53:24 · 327 阅读 · 0 评论 -
LeetCode 103、二叉树的锯齿形层序遍历---BFS---Deque
给你二叉树的根节点root,返回其节点值的。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。原创 2024-07-18 21:29:56 · 379 阅读 · 0 评论 -
LeetCode 102、二叉树的层序遍历---BFS
给你二叉树的根节点root,返回其节点值的。(即逐层地,从左到右访问所有节点)。原创 2024-07-18 17:59:52 · 798 阅读 · 0 评论 -
LeetCode 297 、二叉树的序列化与反序列化 ---DFS
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。原创 2024-07-18 12:02:11 · 350 阅读 · 0 评论 -
LeetCode 236、二叉树的最近公共祖先---DFS
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(5节点 5 和节点 4 的最近公共祖先是节点 5。因为根据定义最近公共祖先节点可以为节点本身。原创 2024-07-18 11:48:08 · 730 阅读 · 0 评论 -
LeetCode 105、从前序与中序遍历序列构造二叉树---DFS
给定两个整数数组preorder和inorder,其中preorder是二叉树的inorder是同一棵树的,请构造二叉树并返回其根节点。原创 2024-07-18 11:26:02 · 425 阅读 · 0 评论 -
LeetCode 226、翻转二叉树 ---DFS
给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。原创 2024-07-18 11:06:47 · 395 阅读 · 0 评论 -
LeetCode 111 、二叉树的最小深度 ---DFS---BFS
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。原创 2024-07-18 10:56:41 · 279 阅读 · 0 评论 -
LeetCode 104、二叉树的最大深度 ---DFS---BFS
给定一个二叉树root,返回其最大深度。二叉树的是指从根节点到最远叶子节点的最长路径上的节点数。原创 2024-07-18 10:50:12 · 326 阅读 · 0 评论 -
LeetCode94/144/145 二叉树的中序/前序/后序遍历---递归
定义 inorder(root) 表示当前遍历到 root 节点的答案,那么按照定义,我们只要递归调用 inorder(root.left) 来遍历 root 节点的左子树,然后将 root 节点的值加入答案,再递归调用inorder(root.right) 来遍历 root 节点的右子树即可,的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。首先我们需要了解什么是二叉树的中序遍历:按照访问。原创 2024-07-18 10:00:12 · 331 阅读 · 0 评论 -
LeetCode 160、相交链表---双指针
给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。原创 2024-07-17 21:18:53 · 900 阅读 · 0 评论 -
LeetCode 19、删除链表的倒数第 N 个结点
1,2,3,5]原创 2024-07-17 20:46:55 · 395 阅读 · 0 评论 -
LeetCode 876、链表的中间结点
给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。[3,4,5]链表只有一个中间结点,值为 3。原创 2024-07-17 20:27:18 · 201 阅读 · 0 评论 -
链表---c++
请你删除链表中所有满足。给你一个链表的头节点。原创 2024-07-17 16:58:54 · 285 阅读 · 0 评论 -
LeetCode967、连续差相同的数字---回溯---DFS
返回所有长度为n且满足其每两个连续位上的数字之间的差的绝对值为k的。请注意,数字0本身之外,答案中的每个数字都有前导零。例如,01有一个前导零,所以是无效的;但0是有效的。你可以按返回答案。注意,070 不是一个有效的数字,因为它有前导零。原创 2024-07-17 09:49:34 · 260 阅读 · 0 评论 -
单词搜索---回溯法---c++
给定一个m x n二维字符网格board和一个字符串单词word。如果word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。true。原创 2024-07-16 23:10:19 · 276 阅读 · 0 评论 -
组合总合2---数组中每个数字只能使用一次---递归回溯法
给定一个候选人编号的集合candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用。解集不能包含重复的组合。原创 2024-06-12 23:42:47 · 184 阅读 · 0 评论 -
组合总合 回溯法---递归
【代码】组合总合 回溯法---递归。原创 2024-06-12 21:26:16 · 226 阅读 · 0 评论 -
子集===递归回溯法
给你一个整数数组nums,数组中的元素。返回该数组所有可能的子集(幂集)。解集包含重复的子集。你可以按返回解集。一般来说,回溯算法的思考步骤如下:1、画出递归树,找到状态变量(回溯函数的参数)2、寻找结束条件,由于回溯算法是借助递归实现,所以也就是去寻找递归终止条件3、确定选择列表,即需要把什么数据存储到结果里面4、判断是否需要剪枝,去判断此时存储的数据是否之前已经被存储过5、做出选择,递归调用该函数,进入下一层继续搜索6、撤销选择,回到上一层的状态。原创 2024-06-12 22:23:54 · 304 阅读 · 0 评论 -
课程表Ⅱ---拓扑排序---DFS---BFS
现在你总共有numCourses门课需要选,记为0到。给你一个数组,其中,表示在选修课程ai前先选修bi。01[0,1]返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回就可以了。如果不可能完成所有课程,返回。[0,1]总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为[0,1]。[0,2,1,3]总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。原创 2024-07-15 11:14:33 · 172 阅读 · 0 评论 -
课程表---拓扑排序---DFS---BFS
你这个学期必须选修numCourses门课程,记为0到。在选修某些课程之前需要一些先修课程。先修课程按数组给出,其中,表示如果要学习课程ai则先学习课程bi。[0, 1]01请你判断是否可能完成所有课程的学习?如果可以,返回true;否则,返回false。true总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。这是可能的。false总共有 2 门课程。学习课程 1 之前,你需要先完成课程 0;并且学习课程 0 之前,你还应先完成课程 1。这是不可能的。原创 2024-07-15 10:47:08 · 385 阅读 · 0 评论 -
腐烂的橘子---多源BFS
在给定的m x n网格grid中,每个单元格可以有以下三个值之一:值0代表空单元格;值1代表新鲜橘子;值2代表腐烂的橘子。每分钟,腐烂的橘子的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回-1。4。原创 2024-07-13 17:47:53 · 307 阅读 · 0 评论 -
LC841. 钥匙和房间---邻接表---DFS/BFS
有n个房间,房间按从0到n - 1编号。最初,除0号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。当你进入一个房间,你可能会在里面找到一套不同的钥匙,每把钥匙上都有对应的房间号,即表示钥匙可以打开的房间。你可以拿上所有钥匙去解锁其他房间。给你一个数组rooms其中rooms[i]是你进入i号房间可以获得的钥匙集合。如果能进入房间返回true,否则返回false。true我们从 0 号房间开始,拿到钥匙 1。之后我们去 1 号房间,拿到钥匙 2。原创 2024-07-13 17:18:40 · 221 阅读 · 0 评论