- 博客(124)
- 收藏
- 关注
原创 【每日题解】3165. 不包含相邻元素的子序列的最大和 + 【算法理论】线段树
【每日题解】3165. 不包含相邻元素的子序列的最大和 + 【算法理论】线段树(多次单点修改和区间查询)
2024-10-31 17:07:40
1110
原创 【算法理论】Union-Find 并查集 +【每日题解】684.冗余连接
Union-Find 并查集的通俗理解和代码实现,习题练习 力扣每日 10.27 冗余连接。
2024-10-28 16:26:25
838
原创 【每日题解】20240805 2053. Kth Distinct String in an Array
找到字符串中唯一的字符串,就是判断字符串是否重复出现,因此很自然的想到用哈希表。首先想到用字符数组来存储,结果发现arr中存储的是字符串。找到字符串列表中的第k个唯一的字符串。
2024-08-05 21:10:04
268
原创 KamaCoder 100. 岛屿的最大面积 + Leetcode 695. Max Area of Island
KamaCoder 100. 岛屿的最大面积 + Leetcode 695. Max Area of Island
2024-07-29 23:53:47
239
1
原创 KamaCoder 99. 岛屿数量 + Leetcode 200. Number of Islands
【算法理论】-广度优先搜索, 岛屿问题 + Leetcode岛屿问题真题
2024-07-28 02:01:04
480
原创 KamaCoder 98. 所有可到达路径 + LC 797. All Paths From Source to Target
给定一个有 n 个节点的有向无环图,节点编号从 1 到 n。请编写一个函数,找出并返回所有从节点 1 到节点 n 的路径。每条路径应以节点编号的列表形式表示。
2024-07-27 01:03:05
387
原创 20240404-1544.把字符串变好
给定一个由小写和大写英文字母组成的字符串 s。一个好的字符串是没有两个相邻字符 s[i] 和 s[i + 1] 的字符串,其中:0
2024-04-05 11:00:26
297
原创 20240226-100. 同一棵树
如果每棵树中的节点总数为 n(假设两棵树的结构和节点数都相同,以进行最坏情况分析),则时间复杂度为 O(n),其中 n 是树中的节点数。- 在最坏的情况下,树是完全不平衡的,例如,每个节点只有一个子节点,导致递归深度为 `n`,其中 `n` 是树中的节点数。- 在最好的情况下,树是完全平衡的,树的高度为 log(n),因此调用栈导致的最好情况下的空间复杂度为 O(log(n))。因此,isSameTree 函数的时间复杂度为 O(n),其中 n 是两棵树中较大的一棵树的节点数。
2024-02-27 07:39:36
497
原创 20240223-2092.查找所有有秘密的人
但是,使用路径压缩后,时间复杂度接近于常数时间,平均复杂度为 \(O(\alpha(n))\),其中 \(\alpha(n)\) 是Ackermann函数的反函数,对于所有实际的输入值几乎可以认为是常数。但这不会超过 \(O(m)\)。在最坏情况下,每次合并操作的时间复杂度为 \(O(\alpha(n))\),因此总的时间复杂度为 \(O(m \alpha(n))\)。- 首先,按时间对会议进行排序,其时间复杂度为 \(O(m \log m)\),其中 \(m\) 是会议的数量。
2024-02-26 15:34:45
883
原创 20240221-查找城镇法官
如果存在法官那么一定意味着有一个人不信任任何人,也就是他不会出现在trust[i]中的a[i]位置上即可,其次他会在b[i]的位置上出现n-2次。给你一个数组 trust,其中 trust[i] = [ai,bi] 表示标有 ai 的人信任标有 bi 的人。如果 trust 数组中不存在信任关系,那么这种信任关系就不存在。在一个小镇上,有 n 个从 1 到 n 的人。如果小镇法官存在且可以识别,则返回小镇法官的标签,否则返回-1。2. 每个人(除了小镇法官)都信任小镇法官。1. 小镇法官不信任任何人。
2024-02-22 14:27:26
202
原创 20240219-2的幂
这是因为n是2的幂次方,意味着它的二进制表示中只有一个1,减去1之后,这个1就变成了0,而且1后面的所有0都变成了1。首先,我们知道如果一个数是2的幂次方,那么它的二进制表示中只有一个1,并且1后面跟着若干个0。对于两个二进制数,只有在相同位置上的两个位都为1时,结果的该位才为1;否则,结果的该位为0。给定一个整数 n,如果它是 2 的幂,则返回 true。如果存在一个整数 x,使得 n == 2^x,则整数 n 是 2 的幂。有一个位运算的技巧是,对于任何一个数n,如果n是2的幂次方,那么。
2024-02-20 10:50:26
176
原创 20240217-您能到达的最远建筑物
梯子是论个数的,每一个可以无视高度,而砖块则是有限个数,需要足够多的砖块才能够到达下一栋楼。如果我们跳出来看,可以都先使用梯子来完成,并且记录梯子跨过的高度,当遇到比之前更大的高度(更需要用梯子来跳过),我们则把之前用梯子跨过的高度换成砖头。最基本的想法肯定是,当楼高的差值特别大的时候我们就用梯子,如果比较小我们就尽可能用砖块,梯子留着给高楼用。是一种自动排序的队列,它保证每次取出的元素都是队列中的最大值(或最小值,取决于如何配置)。如果当前建筑的高度大于或等于下一栋建筑的高度,则不需要梯子或砖块。
2024-02-18 09:58:08
1089
原创 20240216-删除 K 个唯一整数后的最少数量
用一个哈希表遍历一遍,我们就得到了arr中每个元素出现的次数,然后利用贪心的思维,从小到大把出现次数少的全部删掉,出现次数多的保留,统计留下的元素个数即可。给定一个整数数组 arr 和一个整数 k。求恰好删除 k 个元素后唯一整数的最少个数。遍历操作O(n),排序O(nlogn),总体时间复杂度O(nlogn)。map、nums分别用来存储,复杂度O(n)。
2024-02-17 04:50:45
257
原创 20240215-查找周长最大的多边形
排序之后我们的,我的的dp数组需要存储的是截止到nums中的第i个元素的最长多边形的周长(多边形的边数量需要大于等于3)。如果这个sum大于当前的nums[i],就意味着我们在满足条件1的同时也满足了条件2,即可以把nums[i]加入到多边形中,然后更新多边形的周长即可。第二这种方法要求我们需要存储以当前边为结尾的最长多边形的和,也就是意味着我们需要把当天的第i个元素视作是多边形的最长边,那么我们需要做的就是在之前所有元素中找到元素之和能够大于当前的最长边即可。多边形的周长是边长之和。
2024-02-16 04:01:29
964
原创 20240209-最大可整分子集
要求新加入的元素能够整除前一个元素,所以这里在遍历i的同时,可能还需要遍历之前所有的数来检查是否能够整除:dp[i] = max(dp[i], dp[j]+1) {if nums[i] % nums[j] == 0}再思考一下,在数组中寻找一个特定要求的子序列,那么如果我们把数组进行排列,这个题目就变成了寻找“最长上升子序列”类似的题目,因为我们要求每两个数之间具备整除关系,这就意味着其中一个一定大于等于另一个。我们需要在判断dp[i]和dp[j]的大小时,动态的存储i对应的前一位的位置j。
2024-02-10 01:56:38
391
原创 20240131-将数组划分为具有最大差异的数组
那么想到我们需要首先对数组进行排序,因为数组经过排序后相邻元素的差值最小。这意味着如果排序后的数组中存在任何相邻元素之间的差值大于k,那么将这些元素分配到满足条件的大小为3的子数组中就不可能了。反过来,如果排序后的数组中所有相邻元素的差值都不大于k,那么我们就可以三个一组的构建数组了。首先仔细看题目中的要求,每个数字在子数列中出现恰好1次,同时n一定是3的倍数。排序时间复杂度O(nlogn),遍历数组O(n),总体时间复杂度O(nlogn)。给你一个大小为 n 的整数数组 nums 和一个正整数 k。
2024-02-01 12:57:37
481
原创 20240125-边界外路径
有一个m*n的网格,网格中有一个小球。您可以将小球移动到网格中相邻的四个单元格之一(可能会越过网格边界移出网格)。状态转移关系:在maxMove步之内从(i,j)位置踢出界外的路径数量等于在maxMove-1步之内从(i,j)的相邻位置踢出界外的路径数量之和。给定 m、n、maxMove、startRow、startColumn 这五个整数,返回将小球移出网格边界的路径数。这个题目有三个状态:横坐标、纵坐标和可移动的次数,所以我们可以用一个三维的dp数组存储这三个状态或者一个带有三个参数的dp函数。
2024-01-27 03:26:44
320
原创 20240123-二叉树中的伪平行路径
在这个上下文中,"当前节点值的位"指的是一个位掩码中的一个特定位,该位代表了一个从1到9的数字。在我们的场景中,我们使用位掩码的每一位来表示数字1到9是否在当前路径上出现了奇数次。判断回文我们只需要统计一个路径上字符出现的次数,要么全部为偶数,要么只有一个数字为奇数则是回文。:对于每一位,如果两个操作数的相应位一个是1另一个是0,则结果为1。:对于每一位,如果两个操作数的相应位中至少有一个为1,则结果为1。:对于每一位,只有两个操作数的相应位都是1时,结果才为1。这个操作的效果是将位掩码中的最低位的。
2024-01-26 18:24:09
1281
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人