数据结构
文章平均质量分 51
ershiyidian
知之者不如好之者,好之者不如乐之者~~~
展开
-
链表中间节点---删除倒数第几个节点---相交链表---C++
【代码】链表中间节点---删除倒数第几个节点---相交链表---C++原创 2024-08-12 10:07:30 · 294 阅读 · 0 评论 -
用栈实现队列---C++
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):实现MyQueueint pop()int peek()truefalsesizeis empty。原创 2024-08-11 23:07:47 · 380 阅读 · 0 评论 -
用队列实现栈---C++实现
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(myStack.empty();// 返回 False。的元素,queue2 作为入栈操作的。其中 queue1 用于存储。原创 2024-08-11 22:53:45 · 389 阅读 · 0 评论 -
1190. 反转每对括号间的子串---栈
给出一个字符串s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中包含任何括号。"dcba""iloveu"先反转子字符串 "love" ,然后反转整个字符串。原创 2024-08-10 09:56:28 · 126 阅读 · 0 评论 -
数组元素TOP1---哈希表
即找出数组中出现的值,若有多个出现次数相同的元素,一并输出。原创 2024-08-10 00:17:53 · 244 阅读 · 0 评论 -
35. 搜索插入位置---二分法
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法。21。原创 2024-07-19 21:02:51 · 191 阅读 · 0 评论 -
LC219. 存在重复元素II
给你一个整数数组nums和一个整数k,判断数组中是否存在两个i和j,满足且。如果存在,返回true;否则,返回false。原创 2024-07-19 11:29:33 · 349 阅读 · 0 评论 -
LC1. 两数之和---哈希表
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。[0,1]因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。原创 2024-07-19 11:18:06 · 340 阅读 · 0 评论 -
LeetCode 337、打家劫舍III ---动态规划DP---DFS
小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵如果,房屋将自动报警。给定二叉树的root。返回,小偷能够盗取的最高金额。7小偷一晚能够盗取的最高金额 3 + 3 + 1 = 7。原创 2024-07-18 22:31:11 · 818 阅读 · 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 · 629 阅读 · 0 评论 -
LeetCode 98、验证二叉搜索树---DFS
给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。[1, ]true。原创 2024-07-18 21:53:24 · 301 阅读 · 0 评论 -
LeetCode 103、二叉树的锯齿形层序遍历---BFS---Deque
给你二叉树的根节点root,返回其节点值的。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。原创 2024-07-18 21:29:56 · 336 阅读 · 0 评论 -
LeetCode 102、二叉树的层序遍历---BFS
给你二叉树的根节点root,返回其节点值的。(即逐层地,从左到右访问所有节点)。原创 2024-07-18 17:59:52 · 738 阅读 · 0 评论 -
LeetCode 297 、二叉树的序列化与反序列化 ---DFS
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。原创 2024-07-18 12:02:11 · 329 阅读 · 0 评论 -
LeetCode 236、二叉树的最近公共祖先---DFS
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(5节点 5 和节点 4 的最近公共祖先是节点 5。因为根据定义最近公共祖先节点可以为节点本身。原创 2024-07-18 11:48:08 · 703 阅读 · 0 评论 -
LeetCode 105、从前序与中序遍历序列构造二叉树---DFS
给定两个整数数组preorder和inorder,其中preorder是二叉树的inorder是同一棵树的,请构造二叉树并返回其根节点。原创 2024-07-18 11:26:02 · 392 阅读 · 0 评论 -
LeetCode 226、翻转二叉树 ---DFS
给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。原创 2024-07-18 11:06:47 · 351 阅读 · 0 评论 -
LeetCode 111 、二叉树的最小深度 ---DFS---BFS
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。原创 2024-07-18 10:56:41 · 256 阅读 · 0 评论 -
LeetCode 104、二叉树的最大深度 ---DFS---BFS
给定一个二叉树root,返回其最大深度。二叉树的是指从根节点到最远叶子节点的最长路径上的节点数。原创 2024-07-18 10:50:12 · 294 阅读 · 0 评论 -
LeetCode94/144/145 二叉树的中序/前序/后序遍历---递归
定义 inorder(root) 表示当前遍历到 root 节点的答案,那么按照定义,我们只要递归调用 inorder(root.left) 来遍历 root 节点的左子树,然后将 root 节点的值加入答案,再递归调用inorder(root.right) 来遍历 root 节点的右子树即可,的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。首先我们需要了解什么是二叉树的中序遍历:按照访问。原创 2024-07-18 10:00:12 · 305 阅读 · 0 评论 -
LeetCode 160、相交链表---双指针
给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。原创 2024-07-17 21:18:53 · 855 阅读 · 0 评论 -
LeetCode 19、删除链表的倒数第 N 个结点
1,2,3,5]原创 2024-07-17 20:46:55 · 371 阅读 · 0 评论 -
LeetCode 876、链表的中间结点
给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。[3,4,5]链表只有一个中间结点,值为 3。原创 2024-07-17 20:27:18 · 152 阅读 · 0 评论 -
链表---c++
请你删除链表中所有满足。给你一个链表的头节点。原创 2024-07-17 16:58:54 · 254 阅读 · 0 评论 -
LeetCode 69、x 的平方根---二分法
时间复杂度:O*(log*x),即为二分查找需要的次数。不允许使用任何内置指数函数和算符,例如。由于返回类型是整数,结果只保留。空间复杂度:O(1)。原创 2024-07-10 15:26:21 · 178 阅读 · 0 评论 -
LeetCode 179、最大数---贪心算法
重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。输出结果可能非常大,所以你需要返回一个字符串而不是整数。原创 2024-07-09 21:50:14 · 205 阅读 · 0 评论 -
LeetCode 215、数组中的第 K 个最大元素---相向双指针(快速排序)---堆排序(优先队列)---DFS
堆排序,DFS原创 2024-07-09 14:41:32 · 157 阅读 · 0 评论 -
LC75. 颜色分类---单指针---双指针
给定一个包含红色、白色和蓝色、共n个元素的数组nums对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数01和2分别表示红色、白色和蓝色。必须在的情况下解决这个问题。输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]原创 2024-07-09 10:44:46 · 277 阅读 · 0 评论 -
力扣16. 最接近的三数之和---相向双指针
给你一个长度为n的整数数组nums和 一个目标值target。请你从nums中选出三个整数,使它们的和与target最接近。返回这三个数的和。假定每组输入只存在恰好一个解。2与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。原创 2024-07-09 09:46:13 · 133 阅读 · 0 评论 -
LC15. 三数之和---相向双指针
给你一个包含n个整数的数组nums,判断nums中是否存在三个元素 *a,b,c ,*使得0?请你找出所有和为0且不重复的三元组。答案中不可以包含重复的三元组。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。原创 2024-07-09 09:32:03 · 166 阅读 · 0 评论 -
LC11. 盛水最多的容器---相向双指针
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai)。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。原创 2024-07-09 09:18:26 · 153 阅读 · 0 评论 -
LC167. 两数之和II- 输入有序数组
给你一个下标从开始的整数数组numbers,该数组已按,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是和,则。以长度为 2 的整数数组的形式返回这两个整数的下标index1和index2。你可以假设每个输入,而且你重复使用相同的元素。你所设计的解决方案必须只使用的额外空间。输入:numbers = [2,7,11,15], target = 9输出:[1,2]解释:2 与 7 之和等于目标数 9。因此 index1 = 1, index2 = 2。原创 2024-07-09 09:06:29 · 164 阅读 · 0 评论 -
LC27. 移除元素---同向双指针
给你一个数组nums和一个值val,你需要移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。函数应该返回新的长度, 并且 nums中的前两个元素均为。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。原创 2024-07-09 09:00:39 · 182 阅读 · 0 评论 -
LC26. 删除有序数组中的重复项---同向双指针
给你一个的数组nums,请你删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有k个元素,那么nums的前k个元素应该保存最终结果。将最终结果插入nums的前k个位置后返回k。不要使用额外的空间,你必须在并在使用 O(1) 额外空间的条件下完成。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]原创 2024-07-09 08:50:05 · 230 阅读 · 0 评论 -
LC349. 两个数组的交集---哈希集合
哈希集合解法给定两个数组nums1和nums2,返回它们的交集。输出结果中的每个元素一定是的。我们可以。原创 2024-07-07 11:51:05 · 260 阅读 · 0 评论 -
LeetCode735 小行星碰撞---数据结构---栈
给定一个整数数组asteroids,表示在同一行的小行星。对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。找出碰撞后剩下的所有小行星。碰撞规则:两个小行星相互碰撞,较小的小行星会爆炸。如果两颗小行星大小相同,则两颗小行星都会爆炸。两颗移动方向相同的小行星,永远不会发生碰撞。[5,10]10 和 -5 碰撞后只剩下 10。5 和 10 永远不会发生碰撞。原创 2024-07-07 09:48:39 · 209 阅读 · 0 评论 -
LC42. 接雨水---DP---单调递减栈
给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。原创 2024-07-06 22:53:04 · 240 阅读 · 0 评论 -
LC739. 每日温度---数据结构---单调递减栈
根据每日气温列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用0来代替。例如,给定一个列表,你的输出应该是。气温列表长度的范围是[1, 30000]。每个气温的值的均为华氏度,都是在[30, 100]范围内的整数。原创 2024-07-06 21:37:32 · 300 阅读 · 0 评论 -
LC496. 下一个更大元素 I---数据结构---单调递减栈
nums1中数字x的是指x在nums2中对应位置的比x大的元素。给你两个的数组nums1和nums2,下标从开始计数,其中nums1是nums2的子集。对于每个,找出满足的下标j,并且在nums2确定nums2[j]的。如果不存在下一个更大元素,那么本次查询的答案是-1。返回一个长度为的数组ans作为答案,满足ans[i]是如上所述的。原创 2024-07-06 21:24:36 · 265 阅读 · 0 评论 -
LC71. 简化路径---数据结构---栈
给你一个字符串path,表示指向某一文件或目录的 Unix 风格(以'/'开头),请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点()表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠'/'。对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。请注意,返回的必须遵循下述格式:始终以斜杠'/'开头。两个目录名之间必须只有一个斜杠'/'。原创 2024-07-06 17:42:41 · 421 阅读 · 0 评论