算法练习
文章平均质量分 81
天天困啊
个人简介:大家好,我是一名大二的后端开发学生,华为云享专家。专注于Java、Mysql、Redis、SSM、Spring Boot。我热衷于数据结构和算法,并在GitHub上分享我的开源项目。我在CSDN上记录和分享我的学习过程。编写代码时,我仿佛置身于一架精致的钢琴前,每一个键都是一段代码,每一次敲击都是对程序的精心雕琢。欢迎关注我,一起学习,一起进步!
展开
-
3096.力扣每日一题 Java(前缀和)
如果在某个分割点,Alice的得分严格大于Bob在此之后可能获得的最大分数(这通常意味着Alice的得分加上至少一个关卡的最低分数仍然大于剩余关卡的分数总和),我们就找到了答案,即Alice需要完成的最少关卡数。然而,需要注意的是,上述过程中的第3步在实际编码时可能并不需要显式计算Bob的得分,因为我们可以直接通过比较Alice的得分和剩余关卡中简单模式与困难模式的数量差(或前缀和数组中的某个值)来做出判断。数组(从第二个元素开始,因为第一个元素代表只有一个关卡时的分数,不满足题目要求),对于每个分割点。原创 2024-07-19 16:47:26 · 954 阅读 · 1 评论 -
3112.力扣每日一题7/18 Java 迪杰斯特拉(Dijkstra)算法
迪杰斯特拉算法的时间复杂度通常为 O(N²),其中N是顶点的数量。如果使用二叉堆如果使用二堆(或斐波那契堆)来优化选择最小距离顶点的操作,时间复杂度可以优化到O((N+M)logN),其中M是边的数量。同时考虑每个节点的消失时间,如果在节点消失之前无法到达,则标记为不可达(-1)。它的基本思想是:从一个起始顶点出发,逐步向外扩展,每次选择距离起始顶点最近且未被处理过的顶点,然后更新该顶点相邻顶点的距离。的数组来存储每个节点的最少到达时间和一个优先级队列,空间复杂度主要取决于节点数量。,还使用了一个长度为。原创 2024-07-19 16:35:49 · 777 阅读 · 0 评论 -
2959.力扣每日一题7/17 Java(暴力枚举+Floyd算法)
通过枚举所有可能的节点集合状态,对于每个状态,复制相关节点的距离信息到一个临时矩阵,然后在这个子集上运行 Floyd 算法计算最短路,最后检查这个子集中任意两个节点的最短路是否都不超过给定的最大距离,统计满足条件的方案数。在上述提到的问题中,使用 Floyd 算法来计算各个顶点之间的最短路径,通过三重循环遍历所有可能的中转顶点 k,以及起点 i 和终点 j,根据状态转移方程不断更新距离矩阵 f,以得到最终的最短路径信息。其核心思路是通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。原创 2024-07-19 16:14:50 · 941 阅读 · 0 评论 -
2956.力扣每日一题7/16 Java
来检查是否存在相同元素,若存在则。进行相同的操作,若存在相同元素则。加 1 并结束内层循环。加 1 并结束内层循环。通过两层循环来分别处理。原创 2024-07-19 15:55:20 · 393 阅读 · 0 评论 -
721.力扣每日一题7/15 Java(并查集)
最后,我们遍历所有邮箱地址,根据并查集的结果将它们分组到对应的账户中。对于每个组(即每个并查集的根节点),我们收集其下所有的邮箱地址,并从任意一个邮箱地址中获取对应的账户名称(因为我们已经假设了每个账户内的邮箱地址都关联到同一个名称)。对于每个账户,我们将其中的第一个邮箱地址作为代表,并将其与账户中的其他邮箱地址进行合并操作。:对于每个分组,收集其下的邮箱地址,并从任意一个邮箱地址中获取账户名称,然后构建并添加到结果列表中。:遍历所有邮箱地址,根据并查集的结果将它们分组到对应的账户中。原创 2024-07-19 15:45:49 · 1042 阅读 · 0 评论 -
807.力扣每日一题7/14 Java(执行用时分布击败100%)
以及一些固定大小的变量,空间复杂度为。原创 2024-07-14 22:54:05 · 769 阅读 · 0 评论 -
3011.力扣每日一题7/13 Java(冒泡排序)
冒泡排序解法以及冒泡排序讲解原创 2024-07-13 23:18:10 · 1267 阅读 · 0 评论 -
2974.力扣每日一题7/12 Java(执行用时分布击败100%)
用时分布击败100%的解法原创 2024-07-12 11:17:53 · 840 阅读 · 0 评论 -
2972.力扣每日一题7/11 Java(击败100%)
如果数组不是整体递增的,那么我从数组的末尾开始,尝试找到可以与前面找到的最长递增前缀相结合的递增后缀。对于每个这样的后缀,我计算可以与它结合的最长递增前缀的长度。该问题的目标是计算给定数组中,可以移除的递增子数组的数量。一个子数组如果可以移除,意味着它在原数组中是递增的。:如果整个数组(除了最后一个元素外)都是递增的,那么任何非空子数组都可以移除。这是因为任何包含这个前缀的子数组都是递增的,因此可以移除。:对于每个找到的递增后缀,我将其与兼容的前缀组合,形成可以移除的递增子数组,并累加这些组合的数量。原创 2024-07-11 22:22:46 · 717 阅读 · 0 评论 -
2970.力扣每日一题7/10 Java(暴力枚举)
incremovableSubarrayCount 方法通过两层循环遍历数组 nums 的所有可能子数组。对于每个子数组,调用 isRemovableIncreasing 方法来判断移除该子数组后剩余元素是否严格递增。isRemovableIncreasing 方法创建一个新的数组来存储移除指定子数组后的元素,然后通过遍历这个新数组来检查其是否严格递增。采用暴力枚举的方式,遍历所有可能的子数组,并通过创建新数组和逐个比较元素的方式来判断剩余元素的递增性。要做到坚韧不拔,最要紧的是坚持到底。原创 2024-07-11 02:39:05 · 663 阅读 · 0 评论 -
3102.力扣每日一题7/9 Java(TreeMap)
TreeMap是 Java 中的一种数据结构,属于Map接口的实现类之一。TreeMapComparableTreeMapnComparableTreeMapTreeMapTreeMapfirstKey()TreeMaplastKey()TreeMapsubMap总的来说,TreeMap提供了有序存储和操作键值对的功能,适用于对数据顺序有要求的场景。但在某些情况下,如果不关心顺序,使用HashMap可能在性能上更有优势,因为其操作的平均时间复杂度更低。原创 2024-07-10 22:01:46 · 2415 阅读 · 0 评论 -
724.力扣每日一题7/8 Java
Stop struggling, life is stopped.——(Thomas Carlyle)托马斯·卡莱尔。原创 2024-07-08 22:50:49 · 890 阅读 · 0 评论 -
1958.力扣每日一题7/7 Java(100%解)
淡泊名利,动静相济,劳逸适度。原创 2024-07-07 22:02:56 · 689 阅读 · 0 评论 -
3101.力扣每日一题7/6 Java(接近100%解法)
One today is worth two tomorrows. Benjamin Franklin 一个今天抵得上两个明天。——本杰明弗兰克林。原创 2024-07-06 18:23:11 · 981 阅读 · 0 评论 -
3033.力扣每日一题7/5 Java
我的成就,当归功于精微的思索。——牛顿。原创 2024-07-05 22:10:50 · 607 阅读 · 0 评论 -
3086.力扣每日一题7/4 Java
科学是没有国界的,因为它是属于全人类的财富,是照亮世界的火把;但学者属于祖国。——巴斯德。原创 2024-07-05 22:02:45 · 543 阅读 · 0 评论 -
3099.力扣每日一题7/3 Java(击败100%)
"过去都是幻觉。而未来还有可期"——《了不起的盖茨比》弗朗西斯·斯科特·菲茨杰拉德。原创 2024-07-03 09:04:29 · 532 阅读 · 0 评论 -
3115.力扣每日一题7/2 Java
对于在给定整数数组中找到任意两个质数之间最大距离的问题,上述的直接遍历加状态跟踪的解法通常是最简单且直接的方法。虽然可以探索其他解法或优化思路,但在实际应用中,这些方法的效率和可行性可能因问题的具体条件而异。在没有特定要求或限制的情况下,推荐使用直接且有效的方法来解决问题。Blessed is he whose fame does not outshine his truth. 有福之人,是因为他的真实比他的名誉更耀眼。——泰戈尔。原创 2024-07-02 13:15:05 · 1048 阅读 · 0 评论 -
2065.力扣每日一题7/1 Java(深度优先搜索DFS)
深度优先搜索(DFS)原创 2024-07-01 22:22:55 · 408 阅读 · 0 评论 -
494.力扣每日一题6/30 Java(三种解法)
三种解法原创 2024-06-30 22:46:49 · 1827 阅读 · 0 评论 -
2710.力扣每日一题6/29 Java(字符串)
水激石则鸣,人激志则宏。——出自秋瑾原创 2024-06-29 08:42:00 · 326 阅读 · 0 评论 -
2742.力扣每日一题6/28 Java(0-1背包问题)
你必须找到你的宝藏,否则你在途中发现的一切便全都失去了意义。——保罗·柯艾略。原创 2024-06-28 16:47:40 · 1014 阅读 · 0 评论 -
2734.力扣每日一题6/27 Java(贪心算法)
首先找到第一个不是 a 的字符位置(因为 a 是最小的字符),如果不存在这样的字符,说明整个字符串都是 a,那么只需将最后一个字符变为 z。如果找到了第一个不是 a 的字符位置,那么从这个位置开始到末尾的字符都可以减 1,这样可以得到一个更小的字典序字符串。例如,在找零钱问题中,如果要找给顾客 67 元,而手头有面值为 20 元、10 元、5 元、1 元的纸币,贪心算法会每次选择尽可能大面值的纸币,即先选择 3 张 20 元,再选择 1 张 5 元,最后选择 2 张 1 元。没有被听见不是沉默的理由。原创 2024-06-27 15:59:59 · 910 阅读 · 0 评论 -
2741.力扣每日一题6/26 Java
大自然的每一个领域都是美妙绝伦的。——亚里士多德。原创 2024-06-26 15:43:58 · 592 阅读 · 0 评论 -
2732.力扣每日一题6/25 Java
这可以通过位运算来实现,将每一列的二进制表示与相应的列的二进制表示进行按位与操作,然后将结果与该列的二进制表示进行比较。看到这一题,首先可以注意到,每一行的二进制表示与每一列的二进制表示进行按位与操作,得到的结果就是该行中1的个数。因此,我们可以通过计算每一行的二进制表示与相应的列的二进制表示进行按位与操作,然后将结果相加,得到的结果就是该行中1的个数。1.首先,我们需要遍历整个矩阵,计算每一列的和。这可以通过位运算来实现,将每一行的二进制表示与相应的列的二进制表示进行按位与操作,然后将结果相加。原创 2024-06-25 22:27:30 · 1143 阅读 · 0 评论 -
520.力扣每日一题6/23 Java
解题思路是基于题目给出的三种大写用法正确的情况进行逻辑判断。解题方法是通过遍历字符串并使用条件语句来检查每个字符是否符合规则。时间复杂度是O(n),空间复杂度是O(1)。成功不是偶然的,而是努力的结果。——爱因斯坦。原创 2024-06-23 19:48:45 · 1168 阅读 · 1 评论 -
2748.力扣每日一题6/20 Java
给你一个下标从 0 开始的整数数组 nums。如果下标对 i、j 满足 0 ≤ i < j < nums.length ,如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 ,则认为 nums[i] 和 nums[j] 是一组 美丽下标对。返回 nums 中 美丽下标对 的总数目。对于两个整数 x 和 y ,如果不存在大于 1 的整数可以整除它们,则认为 x 和 y 互质。原创 2024-06-20 22:45:56 · 1251 阅读 · 2 评论