![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
CIA_agent
这个作者很懒,什么都没留下…
展开
-
leetcode 29. 两数相除
注意:假设我们的环境只能存储 32 位 有符号整数,其数值范围是 [−231, 231 − 1]。本题中,如果商 严格大于 231 − 1 ,则返回 231 − 1;如果商 严格小于 -231 ,则返回 -231。例如,8.345 将被截断为 8 ,-2.7335 将被截断至 -2。32 + 3*1 +1 (其中 32 = 2^5, 1 也类似)。输入: dividend = 10, divisor = 3。输入: dividend = 7, divisor = -3。原创 2023-10-26 22:11:27 · 233 阅读 · 0 评论 -
leetcode 460. LFU 缓存
cache 中的元素仍然是一个双向链表,除此之外,还需要维护一个变量,统计当前cache 中的元素的最小出现次数(从cache 中删除元素时,需要根据这个值来进行删除)当一个键首次插入到缓存中时,它的使用计数器被设置为 1 (由于 put 操作)。// 去除键 1 ,1 和 3 的 cnt 相同,但 1 最久未使用。int get(int key) - 如果键 key 存在于缓存中,则获取键的值,否则返回 -1。// 去除键 2 ,因为 cnt(2)=1 ,使用计数最小。lfu.get(1);原创 2023-10-22 16:05:39 · 597 阅读 · 1 评论 -
leetcode 97. 交错字符串
交错 是 s1 + t1 + s2 + t2 + s3 + t3 + …或者 t1 + s1 + t2 + s2 + t3 + s3 + …输入:s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac”输入:s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbbaccc”给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。输入:s1 = “”, s2 = “”, s3 = “”原创 2023-09-09 10:03:04 · 335 阅读 · 0 评论 -
leetcode 416. 分割等和子集
显然 dp[i][j] = dp[i-1][j] or (dp[i-1][j-nums[i]] if j>=nums[i] else 0),时间复杂度为 O(n*sum(nums)/2)思路:定义 dp[i][j] 表示从 nums 中前 i 个元素挑选若干个数,是否存在和为 j 的可能, dp[i][0] = 1。解释:数组可以分割成 [1, 5, 5] 和 [11]。解释:数组不能分割成两个元素和相等的子集。输入:nums = [1,5,11,5]输入:nums = [1,2,3,5]原创 2023-08-04 22:44:42 · 310 阅读 · 0 评论 -
二叉树的序列化和反序列化
&ensp二叉树的序列化是指把二叉树保存成字符串的形式,而二叉树的反序列化则表示把保存成字符串形式的数据恢复成二叉树。&ensp根据二叉树序列化的定义,二叉树序列化比较简单,用#表示为空,保存时,每个节点用逗号隔开,这样,用前序遍历的形式就可以很容易序列化二叉树。反序列化也同理:class Solution: def __init__(self): se...原创 2019-03-04 20:23:51 · 493 阅读 · 0 评论 -
剑指 offer 44 数字序列中某一位的数字
思路:以 13 为例, 因为 13>=10,故到 13 的时候数字肯定是两位数,我们可以把前面的 0,1,2,3…9 前面补 0 变成 00,01,…09, 这样相当于在全是两位数的 00,01,02,…99 中查找第 23位对应的数字。的格式作为一个字符序列,在这个序列中第 2 位(从下标 0 开始计算)是 2 ,第 10 位是 1 ,第 13 位是 1 ,以此类题,请你输出第 n 位对应的数字。第 23 为对应 数字 11 中的第2位(str=‘11’ 的 index 为 1 的那一位)原创 2023-07-10 11:13:41 · 78 阅读 · 0 评论 -
剑指offer 41 数据流中的中位数
如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。数据流里面不断吐出的是5,2,3…,则得到的平均数分别为5,(5+2)/2,3…进阶: 空间复杂度 O(n) , 时间复杂度 O(nlogn)1≤n≤1000 ,大小满足 1≤val≤1000。思路:可以用一个最大值堆和最小值堆可存一半的数据。原创 2023-07-09 19:38:59 · 245 阅读 · 0 评论 -
BM61 矩阵最长递增路径
描述给定一个 n 行 m 列矩阵 matrix ,矩阵内所有数均为非负整数。 你需要在矩阵中找到一条最长路径,使这条路径上的元素是递增的。并输出这条最长路径的长度。这个路径必须满足以下条件:对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外。你不能走重复的单元格。即每个格子最多只能走一次。数据范围:1≤n,m≤1000,1≤matrix[i][j]≤1000进阶:空间复杂度 O(nm) ,时间复杂度 O(nm)例如:当输入为[[1,2,3],[4,原创 2022-04-06 22:12:58 · 468 阅读 · 0 评论 -
剑指 offer 86. 在二叉树中找到两个节点的最近公共祖先
给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。数据范围:树上节点数满足 1≤n≤10^5, 节点值val满足区间 [0,n)要求:时间复杂度 O(n)注:本题保证二叉树中每个节点的val值均不相同。如当输入{3,5,1,6,2,0,8,#,#,7,4},5,1时,二叉树{3,5,1,6,2,0,8,#,#,7,4}如下图所示:所以节点值为5和节点值为1的节点的最近公共祖先节点的节点值为3,所以对应的输出为3。节点本身原创 2022-03-20 18:19:37 · 189 阅读 · 0 评论 -
leetcode 939. 最小面积矩形
给定在 xy 平面上的一组点,确定由这些点组成的矩形的最小面积,其中矩形的边平行于 x 轴和 y 轴。如果没有任何矩形,就返回 0。示例 1:输入:[[1,1],[1,3],[3,1],[3,3],[2,2]]输出:4示例 2:输入:[[1,1],[1,3],[3,1],[3,3],[4,1],[4,3]]输出:2提示:1 <= points.length <= 50...原创 2019-08-08 09:28:28 · 519 阅读 · 0 评论