
数据结构与算法
文章平均质量分 69
合理选择数据结构和算法可以显著提高程序的运行效率,掌握数据结构与算法是成为优秀程序员和软件工程师的关键。
Liu_Junwei
一步一个脚印向前走
展开
-
如何解决哈希冲突?
哈希表就是通过散列函数将键映射到定值,简单来说就是一个键对应一个值。而通过散列函数映射时将两个键映射到了同一个值,即这两个键将被哈希表映射到同一个位置,这种情况就被称为哈希冲突。原创 2024-09-23 09:17:47 · 3718 阅读 · 0 评论 -
并查集(Union-Find)
并查集是一种高效的数据结构,用于处理集合的合并与查找操作,通过路径压缩和按秩合并优化可以使其操作近似于常数时间复杂度。它在解决图论、网络连通性以及其他需要频繁集合操作的问题中具有重要应用价值。原创 2024-10-18 02:00:17 · 491 阅读 · 0 评论 -
优先级队列
通过的构造函数中传入Comparator,可以自定义元素的优先级比较方式。优先队列是Java中一个非常有用的数据结构,适用于许多需要动态优先级管理的场景。它通过堆数据结构实现了高效的插入、删除和访问操作,特别适合处理需要频繁调整优先级的任务。通过自定义比较器,可以灵活地适应不同的优先级规则。原创 2024-10-07 21:36:58 · 657 阅读 · 0 评论 -
二分搜索算法
以上便是二分搜索算法模板的核心代码。二分搜索是一种简单而高效的查找算法,尤其适用于需要频繁查找的场景。其应用场景包括但不限于数值查找、字符串查找等,广泛用于计算机科学及相关领域中。理解二分搜索的原理和实现,不仅能够提升编程能力,还能为算法学习打下良好的基础。:二分搜索算法要求待搜索的数组必须是有序的。通常是升序排列,但也可以是降序排列。原创 2024-10-06 14:49:33 · 556 阅读 · 0 评论 -
回溯算法解决排列组合及子集问题
以上是力扣设计相关问题的题目。排列组合还是子集问题无非就是从序列numsnumsnumsnums以组合为例:1.如果输入,和为 7 的组合应该只有[7]2.如果输入,和为 7 的组合应该有两种[2,2,2,1]和[5,2]3.如果输入,和为 7 的组合应该有两种[2,2,3]和[7]上面用组合问题举的例子,但排列、组合、子集问题都可以有这三种基本形式,所以共有 9 种变化。除此之外,题目也可以再添加各种限制条件,比如让你求和为target且元素个数为k。原创 2024-10-03 18:00:18 · 893 阅读 · 0 评论 -
Leetcode-有效的数独
使用哈希表记录每一行、每一列和每一个小九宫格中,每个数字出现的次数。分别创建三个数组rows[i][index]、columns[j][index] 和 subboxes[⌊3i⌋][⌊3j⌋][index]表示数独的第 i 行第 j 列的单元格所在的行、列和小九宫格中,数字 index+1 出现的次数。解法二:使用int类型的32位做哈希,标识对应的数字从而判断1~9是否出现过。相信喜欢玩数独的朋友们肯定能猜出这道题的要求了哈哈。上面的解法虽然不差,但是还有更巧妙的方法,如下。原创 2024-08-30 01:46:42 · 761 阅读 · 0 评论 -
Leetcode-134.加油站
因为假设 i+1 能到达 j+1 ,而此时因为 i 最远能到 j,所以 i 能达到 i+1,又 i+1 能到达 j+1,所以 i 能达到 j+1 ,这与之前的 i 最远能到 j 的结论相冲突,所以 i 和 j 之间的节点都不能到达 j+1,就不用考虑他们之间的节点了,直接从 j+1开始考虑能不能环绕一周,省去了计算也省去了空间。首先想要环绕一周,那么最后剩余的油量一定要大于0,其次再找到途中到达时油量最紧缺的节点,即将其作为旅途最后一站,那么下一个节点便是出发的节点。因此,3 可为起始索引。原创 2024-08-23 11:19:09 · 918 阅读 · 1 评论 -
Leetcode-169.多数元素
候选人就类似于站在土地上的人,count为0则土地上没人,下一个上来的人成为候选人,count不为0时候选人不变,若属统一联盟,则一起抢占,count+1,若出现敌我两方,则一命换一命,count-1。举一个形象的例子,有一块地,由敌方所有军队的联盟与我方一支军队抢夺且我方军队人数大于敌方所有军队联盟人数,最终谁站在土地上,其所属阵营便能抢占该土地,每次只能上一个人,若属统一联盟,则一起抢占,若出现敌我两方,则一命换一命,显然因为我方人数最多,最后抢夺到土地的一定是我方。,返回其中的多数元素。原创 2024-08-21 01:55:35 · 712 阅读 · 0 评论