自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 问答 (1)
  • 收藏
  • 关注

原创 【Leetcode刷题python之3242. 设计相邻元素求和服务】

*3.快速查询:**由于 adj_sum 和 diag_sum 数组已经包含了所有可能的结果,因此在 adjacentSum 和 diagonalSum 方法中,只需要遍历一次 grid,找到所有等于 value 的单元格,并将对应的 adj_sum 或 diag_sum 值累加起来即可。**1.预处理:**在初始化时,构建两个额外的二维数组 adj_sum 和 diag_sum,分别存储每个单元格的相邻单元格和对角线单元格的值的总和。初始化结果变量 total_adj_sum 为0。

2024-11-09 13:59:02 285

原创 【Leetcode刷题python之633. 平方数之和】

任务是判断是否存在一条从原点 (0, 0) 到右上角 (xCorner, yCorner) 的路径,且路径不经过任何圆的内部或边界。遍历所有圆,如果当前圆与矩形的左上边界相交且未被访问,调用 dfs。遍历所有圆,检查起点 (0, 0) 和终点 (xCorner, yCorner) 是否在任何一个圆内。如果在圆内,直接返回 False。检查圆心到矩形左边界和上边界的距离是否小于等于圆的半径。检查圆心到矩形右边界和下边界的距离是否小于等于圆的半径。计算点到圆心的距离的平方,并与圆的半径的平方进行比较。

2024-11-08 13:26:30 230

原创 【Leetcode刷题python之3255. 长度为 K 的子数组的能量值 II】

给定一个长度为 n 的整数数组 nums 和一个正整数 k,我们需要求出 nums 中所有长度为 k 的子数组的能量值。如果以当前元素为结尾的连续上升的元素个数大于等于 k,则更新结果数组中的对应位置为 nums[i]。如果是,直接返回 nums,因为每个长度为 1 的子数组都是连续上升的。初始化结果数组 results,长度为 n - k + 1,初始值为 -1。如果当前元素与前一个元素之差为 1,或者这是第一个元素,增加计数器 cnt。如果所有元素都是依次连续且上升的,那么能量值为最大的元素。

2024-11-07 10:04:48 228

原创 【Leetcode刷题python之3222. 求出硬币游戏的赢家】

Alice和Bob正在玩一个游戏,每轮中,Alice先进行操作,Bob后操作。:由于每次操作都需要1枚75元硬币和4枚10元硬币,因此每次操作都会减少1枚75元硬币和4枚10元硬币。**1.初始化:**设置一个变量 turn,初始值为1,表示Alice先操作。:如果某一轮中,玩家无法拿出总价值为115的硬币组合,该玩家就输掉游戏。每轮操作中,检查是否有足够的75元硬币和10元硬币。如果有足够的硬币,减少相应的硬币数量,并切换玩家。1枚价值为75的硬币和4枚价值为10的硬币。11枚价值为10的硬币。

2024-11-05 19:34:23 591

原创 【Leetcode刷题python之633. 平方数之和】

当 c 是一个正整数时,我们需要找到两个整数 a 和 b,使得它们的平方和等于 c。一个指针从 0 开始(即 a=0),另一个指针从。给定一个非负整数 c,判断是否存在两个整数 a 和 b,使得 a2+b2=c。如果 a2+b2 >c,说明需要更小的平方和,因此将右指针 b 减少 1。如果a2+b2 <c,说明需要更大的平方和,因此将左指针 a 增加 1。当c=0 时,显然 a=0 和 b=0 满足条件,因此返回 True。如果 a2+b2=c,则找到了满足条件的 a 和 b,返回 True。

2024-11-04 14:42:52 472

原创 【Leetcode刷题java之3259. 超级饮料的最大强化能量】

每小时可以选择饮用一种能量饮料,但如果从一种能量饮料切换到另一种,需要等待一小时来恢复身体的能量系统,在这个小时内不会获得任何强化能量。在这种情况下,dpA[1] 可以是 energyDrinkA[1] + dpB[0],dpB[1] 可以是 energyDrinkB[1] + dpA[0]。因此,dpA[i] = energyDrinkA[i] + max(dpA[i-1], dpB[i-2])。因此,dpB[i] = energyDrinkB[i] + max(dpB[i-1], dpA[i-2])。

2024-11-01 14:50:10 569

原创 【Leetcode刷题java之 3216. 交换后字典序最小的字符串】

对于每个查询 [posi, xi],在线段树中更新 nums[posi] 的值为 xi,并重新计算受影响的节点。v11:选当前节点也选其前一个节点时的最大和(这里实际上不会使用,因为不允许相邻元素都选)。:遍历 nums 数组,并在线段树中记录每个位置的最大子序列和。:每次更新后,查询整个区间的最大和,并累加到最终结果中。v01:不选当前节点但选其前一个节点时的最大和。v10:选当前节点但不选其前一个节点时的最大和。v00:不选当前节点及其前一个节点时的最大和。query 方法用于查询整个区间的最大和。

2024-10-31 14:21:23 281

原创 【Leetcode刷题python之 3216. 交换后字典序最小的字符串】

遍历整数列表,查找是否有相邻的、具有相同奇偶性的数字,并且当前数字大于其后的数字。:如果找到符合条件的数字,就交换它们的位置,并返回交换后的字符串。:如果没有找到符合条件的数字,则直接返回原字符串。:将输入字符串转换为整数列表,方便后续操作。

2024-10-30 20:19:45 216

原创 【Leetcode刷题python之 638. 大礼包】

对于每个生成的二进制字符串,我们需要检查其所有长度为 2 的子字符串。如果存在任何长度为 2 的子字符串全为 ‘0’(即 ‘00’),则该字符串无效。我们需要找到所有长度为 n 的二进制字符串,使得其任意长度为 2 的子字符串中至少包含一个 ‘1’。我们可以使用一个 for 循环遍历从 0 到 2^n - 1 的所有数字,并将它们转换成长度为 n 的二进制字符串。在遍历过程中,我们将所有有效的字符串存储在一个集合或列表中,以避免重复。由于字符串的长度为 n,因此总共有 2^n 种不同的二进制字符串。

2024-10-29 11:49:24 220

原创 【Leetcode刷题python之685. 冗余连接 II】

处理入度大于 1 的节点:遍历每条边 [u, v],记录每个节点的入度。对于入度为 2 的节点,我们需要保留最后一条指向它的边,这是因为题目要求返回最后出现的边。:如果存在入度大于 1 的节点,尝试删除指向它的其中一条边,并检查删除后是否形成了一棵树。如果有环,则环上的任意一条边都可以作为删除的目标。:首先检查每个节点的入度。如果有任何节点的入度大于 1,则说明存在冲突的父节点关系。3.如果有节点的入度为 2,尝试删除指向它的边之一,确保删除后的图仍为树。4.如果没有节点的入度为 2,寻找构成环的边。

2024-10-28 11:28:56 247

原创 【Leetcode刷题python之684. 冗余连接】

在实际实现时,我们首先定义了find函数用于查找根节点,并在查找的过程中进行路径压缩。merge函数用于合并两个节点,如果发现它们已经合并,则说明形成了环,直接返回这条边。这种方法的时间复杂度接近O(n log n),因为并查集的查找和合并操作经过优化后,可以达到近似常数级别的效率。题目要求我们找到一条可以删除的边,使得删除之后的图是一个拥有n个节点的树。:如果u和v的根节点相同,则说明它们已经在同一个集合中,即这两点之间已经存在一条路径,添加这条新边就会形成环。此时,这条边就是我们要找的冗余边。

2024-10-27 15:09:24 161

原创 【Leetcode刷题python之3180. 执行操作可获得的最大总奖励 I】

对于每一个索引 k (k 的范围是从 2x−1 到 x),检查是否已经有路径到达 k−x。如果有路径到达 k−x(即 dp[k-x] 为真),那么就有路径到达k,我们设置 dp[k] = 1。DP数组的索引表示可能的奖励值,而DP数组的值用来记录是否可以通过某些操作达到这个奖励值。我们从 2x−1 到 x 这个范围内遍历,因为根据题目描述,只有当奖励值大于当前累积奖励时,我们才能加上这个奖励值。这个 i 就是我们能到达的最大奖励值。这样可以从最小的奖励值开始考虑,有助于构建递增的奖励序列。

2024-10-25 13:49:39 245

原创 【Leetcode刷题python之3175. 找到连续赢 K 场比赛的第一位玩家】

我们需要找到第一个连续赢得 k 场比赛的玩家。给定的是每个玩家的技能等级和一个正整数 k,并且已知技能等级互不相同。否则,更新当前连胜中的玩家,并将其胜利次数重置为 1。1.继续比赛直到找到满足条件的玩家或队列只剩下一个玩家为止。1.每次比赛后检查当前连胜中的玩家是否达到了 k 场胜利。2.初始化当前连胜中的玩家为队列的第一个玩家。2.如果达到 k 场胜利,则返回该玩家的编号。3.初始化当前连胜中的玩家的胜利次数为 0。1.创建一个队列来表示玩家的排列顺序。3.更新当前连胜中的玩家及其胜利次数。

2024-10-24 16:51:54 276

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除