- 博客(310)
- 资源 (7)
- 收藏
- 关注
原创 4.4 最小生成树:Kruskal、Prim
在图论的世界里,最小生成树是一个相当重要的概念。简单来说,最小生成树是一个连通无向图的所有边的子集,形成一棵权值最小的树。在这一节,我们将探讨两种寻找最小生成树的经典算法:Kruskal算法和Prim算法。
2025-01-04 13:00:00
294
原创 4.3 最短路径问题:Dijkstra、Floyd
在图论中,最短路径问题是一种经典问题,它的目标是在给定的图中找到两个顶点之间的最短路径。在这一节,我们将会介绍两种最常用的解决最短路径问题的算法:Dijkstra算法和Floyd算法。
2025-01-04 12:45:00
332
原创 4.2 图的遍历:深度优先搜索、广度优先搜索
在我们了解了图的基本概念和表示方法后,接下来我们来讨论如何遍历图,也就是如何访问图中的所有顶点。在图论中,有两种主要的遍历策略:深度优先搜索(DFS)和广度优先搜索(BFS)。在这个部分,我们将详细介绍这两种方法。
2025-01-04 12:30:00
192
原创 4.1 图的概念与表示方法
如果说前面我们探索的数据结构是树形的,那么进入第四章,我们将接触到另一种重要的数据结构——图。图是计算机科学中的一种重要的数据结构,它比树结构更加通用,用于表示元素间复杂的关系。
2025-01-04 12:15:00
637
原创 3.6 高级树形数据结构(2-3-4树、B树、B+树、哈夫曼树等)
让我们继续我们的树形数据结构之旅。在前面的章节中,我们已经探索了从基础的二叉树到稍微复杂的平衡树和字典树等数据结构。本节中,我们将向您介绍一些更高级的树形数据结构,如2-3-4树、B树、B+树和哈夫曼树等。
2025-01-04 12:00:00
265
原创 3.5 字典树(Trie)与后缀树
在前面的讨论中,我们涉及了一些常见的树形数据结构,如二叉树、二叉搜索树、平衡二叉树等。但在某些特定场景中,我们需要利用一些特性更强,功能更丰富的树形数据结构。这就引出了本节的主题:字典树和后缀树。
2025-01-04 11:45:00
457
原创 3.4 堆与优先队列
在之前的章节中,我们介绍了栈和队列这两种基础的线性数据结构。虽然它们在许多情况下表现出色,但有些场景下,我们需要一种更为灵活的数据结构来满足特殊需求。例如,在任务调度或者事件处理中,我们可能需要根据任务的优先级而不是它们的进入顺序来处理任务。这时候,我们就需要使用优先队列。在这一小节中,我们将介绍优先队列以及它的一种高效实现——堆。
2025-01-04 11:30:00
343
原创 3.3 平衡二叉树(AVL、红黑树等)
在上一节,我们已经初步探索了二叉搜索树(BST),它是一种高效实现有序列表的数据结构。然而,BST也有其局限性。最明显的问题就是树的高度可能变得很大,特别是在插入的元素是有序的或者接近有序的情况下,这样的树几乎退化为链表,严重影响查询效率。为了解决这个问题,研究者们提出了平衡二叉树。平衡二叉树,顾名思义,就是它的左右子树的高度差都不超过一个固定的常数。这样可以保证树的高度始终维持在对数级别,从而使得在树中查找、插入、删除等操作的效率高效保持在O(logN)。常见的平衡二叉树有AVL树、红黑树等。
2025-01-04 11:15:00
179
原创 3.2 二叉搜索树(BST)
二叉搜索树(Binary Search Tree,简称 BST),是一种特殊的二叉树。它的特性在于:对于任一节点 N,其左子树中所有节点的值都小于节点 N 的值,而右子树中所有节点的值都大于节点 N 的值。因为这个特性,我们可以将二叉搜索树看作是一个动态的有序表。我们可以在 O(logN) 的时间复杂度内找到一个元素(在平均情况下),这比在未排序的数组或者链表中查找要快得多。
2025-01-04 11:00:00
324
原创 3.1 二叉树与遍历
在计算机科学中,二叉树是每个节点最多只有两个子节点的树形数据结构,通常称为左子节点和右子节点。二叉树在算法设计中占据重要的地位,因为它们可以有效地解决很多问题。二叉树有一些重要的特性。其中一个关键特性是,二叉树的每一层的节点数量最多是上一层的两倍。这使得二叉树在表示大量数据时仍然保持着良好的效率。
2025-01-04 06:37:05
205
原创 2.5 线性表的应用与实现
通过对数组、链表、栈、队列以及跳跃列表的探讨,我们已经深入理解了线性表的结构以及相应的操作。在本节,我们将看到这些线性表在实际中的应用,并且以Java为示例,探讨如何实现这些数据结构。
2024-11-10 09:44:51
468
原创 2.4 跳跃列表
在前面的章节中,我们对线性数据结构,如数组、链表、栈和队列进行了深入的讨论。现在,我们将介绍一种非常有趣的数据结构,它是基于链表的,但是在查找元素的效率上有所改进。这种数据结构就是跳跃列表。
2024-11-10 09:43:51
273
原创 算法和数据结构 目录
算法和数据结构 目录第一章:算法与数据结构基础概念1.1 算法基本概念与复杂度分析1.2 数据结构的分类与应用1.3 抽象数据类型(ADT)1.4 算法设计策略与分析方法
2024-11-10 09:35:20
333
原创 1.4 算法设计策略与分析方法
写出好的代码,仅仅理解数据结构是远远不够的,我们还需要了解算法设计和分析。就好比你买了一堆新鲜的食材,但如果没有料理技巧和正确的烹饪步骤,那么也做不出美味的料理。同样的,算法就是我们用来处理和操作数据的“料理技巧”。
2024-11-10 09:32:40
334
原创 1.3 抽象数据类型(ADT)
在日常生活中,我们通常会将一组具有相似性质的事物归类在一起,比如我们可以将苹果、香蕉、橙子归类为“水果”。在这个分类中,我们并不关注这些水果内部的结构(比如他们的细胞构造),而是依据他们的共同特性(如他们都能食用,都含有维生素)来进行分类。在计算机科学中,抽象数据类型的概念与此类似。它将一组数据和操作集合在一起,定义了数据的一些性质和对数据的操作,但不关注这些操作是如何实现的。抽象数据类型的一个经典例子是堆栈(Stack)。
2024-11-10 09:30:19
377
原创 1.1 算法基本概念与复杂度分析
算法是一种解决问题的具体方法。我们可以将生活中的很多问题都看作一个算法。准备一个空杯子。将咖啡豆研磨成合适的粒度。将咖啡粉放入咖啡机中。加入足够的水。启动咖啡机。等待几分钟,直到咖啡机完成任务。将咖啡倒入杯子中。按需添加糖或牛奶。享受你的咖啡。这个过程就是一个算法,它有输入(空杯子、咖啡豆、水)、输出(一杯咖啡)、过程(研磨、冲泡)、正确性(研磨成合适的粒度,加入足够的水等)和复杂度(咖啡豆的研磨时间、水的加入量等)。
2024-11-10 09:24:45
1285
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0259-字符串划分
给定一个小写字母组成的字符串s,请找出字符串中两个不同位置的字符作为分割点,使得字符串分成的三个连续子串且子串权重相等,注意子串不包含分割点。若能找到满足条件的两个分割点,请输出这两个分割点在字符串中的位置下标,若不能找到满足条件的分割点请返回0,0。子串权重计算方式为:子串所有字符的ASCII码数值之和。
2023-08-08 06:00:00
897
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0258-数组连续和
给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。
2023-08-07 06:00:00
656
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0257-增强的strstr
C 语言有一个库函数:,实现在字符串haystack中查找第一次出现字符串needle的位置,如果未找到则返回null。现要求实现一个strstr的增强函数,可以使用带可选段的字符串来模糊查询,与strstr一样返回首次查找到的字符串位置。可选段使用[]标识,表示该位置是可选段中任意一个字符即可满足匹配条件。比如a[bc]表示可以匹配ab或ac。注意目标字符串中可选段可能出现多次。
2023-08-06 06:00:00
718
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0256-补种未成活胡杨
近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1N),排成一排。一个月后,有M棵胡杨未能成活。现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树?
2023-08-05 06:00:00
430
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0255-最小传输时延
某通信网络中有N个网络结点,用1到N进行标识。网络通过一个有向无环图表示,其中图的边的值表示结点之间的消息传递时延。现给定相连节点之间的时延列表,其中u表示源结点,v表示目的结点,w表示u和v之间的消息传递时延。请计算给定源结点到目的结点的最小传输时延,如果目的结点不可达,返回-1。
2023-08-04 06:00:00
284
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0254-求符合要求的结对方式
用一个数组A代表程序员的工作能力,公司想通过结对编程的方式提高员工的能力,假设结对后的能力为两个员工的能力之和,求一共有多少种结对方式使结对后能力为N。
2023-08-03 06:00:00
379
1
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0253-跳房子I
跳房子,也叫跳飞机,是一种世界性的儿童游戏。游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格。跳房子的过程中,可以向前跳,也可以向后跳。假设房子的总格数是count,小红每回合可能连续跳的步教都放在数组steps中,请问数组中是否有一种步数的组合,可以让小红两个回合跳到量后一格?如果有,请输出索引和最小的步数组合。注意:数组中的步数可以重复,但数组中的元素不能重复使用。提供的数据保证存在满足题目要求的组合,且索引和最小的步数组合是唯一的。
2023-07-27 06:00:00
268
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0252-密钥格式化
给定一个非空字符串S,其被N个分隔成N1的子串,给定正整数K,要求除第一个子串外,其余的串每K个用分隔,并将小写字母转换为大写。
2023-07-26 06:00:00
212
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0251-跳格子2
小明和朋友玩跳格子游戏,有 n 个连续格子组成的圆圈,每个格子有不同的分数,小朋友可以选择以任意格子起跳,但是不能跳连续的格子,不能回头跳,也不能超过一圈;给定一个代表每个格子得分的非负整数数组,计算能够得到的最高分数。
2023-07-25 06:00:00
190
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0250-选修课
现有两门选修课,每门选修课都有一部分学生选修,每个学生都有选修课的成绩,需要你找出同时选修了两门选修课的学生,先按照班级进行划分,班级编号小的先输出,每个班级按照两门选修课成绩和的降序排序,成绩相同时按照学生的学号升序排序。
2023-07-24 06:00:00
370
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0249-全排列
给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。S为ABA,则不同的排列有ABAAABBAA三种。
2023-07-23 06:00:00
496
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0248-求最小步数
求从坐标零点到坐标n的最小步数,一次只能沿横坐标轴向左或向右移动2或3。注意:途经的坐标可以为负数。
2023-06-17 06:00:00
512
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0247-恢复数字序列
对于一个连续正整数组成的序列,可以将其拼接成一个字符串,再将字符串里的部分字符打乱顺序。如序列,拼接成的字符串为89101112,打乱一部分字符后得到90811211。注意打乱后原来的正整数可能被拆开,比如在90811211中,原来的正整数10就被拆成了0和1。现给定一个按如上规则得到的打乱了字符的字符串,请将其还原成连续正整数序列,并输出序列中最小的数字。
2023-06-16 06:00:00
547
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0246-需要打开多少监控器
某长方形停车场,每个车位上方都有对应监控器,当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时,监控器才需要打开,给出某一时刻停车场的停车分布,请统计最少需要打开多少个监控器。
2023-06-15 13:52:48
1459
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0245-信号发射和接收
有一个二维的天线矩阵,每根天线可以向其他天线发射信号,也能接收其他天线的信号,为了简化起见,我们约定每根天线只能向东和向南发射信号,换言之,每根天线只能接收东向或南向的信号。每根天线有自己的高度anth,每根天线的高度存储在一个二维数组中,各个天线的位置用[r, c]表示,r代表天线的行位置(从0开始编号),c代表天线的列位置(从0开始编号)。
2023-06-12 11:26:31
567
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0244-Linux发行版的数量
Linux 操作系统有多个发行版,distrowatch.com 提供了各个发行版的资料。这些发行版互相存在关联,例如 Ubuntu 基于Debian 开发,而 Mint 又基于 Ubuntu 开发,那么我们认为 Mint 同 Debian 也存在关联。发行版集是一个或多个相关存在关联的操作系统发行版,集合内不包含没有关联的发行版。给你一个n * n的矩阵其中表示第i个发行版和第j个发行版直接关联,而表示二者不直接相连。返回最大的发行版集中发行版的数量。
2023-06-02 06:00:00
428
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0243-模拟商场优惠打折
模拟商场优惠打折,有三种优惠券可以用,满减券、打折券和无门槛券。满减券:满100减10,满200减20,满300减30,满400减40,以此类推不限制使用;打折券:固定折扣92折,且打折之后向下取整,每次购物只能用1次;无门槛券:一张券减5元,没有使用限制。每个人结账使用优惠券时有以下限制:每人每次只能用两种优惠券,并且同一种优惠券必须一次用完,不能跟别的穿插使用(比如用一张满减,再用一张打折,再用一张满减,这种顺序不行)。求不同使用顺序下每个人用完券之后得到的最低价格和对应使用优惠券的总数;
2023-06-01 06:00:00
696
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0242-天然蓄水库
公元2919年,人类终于发现了一颗宜居星球——X星。现想在X星一片连绵起伏的山脉间建一个天热蓄水库,如何选取水库边界,使蓄水量最大?输出边界下标(从0开始)和最大蓄水量;如果无法蓄水,则返回0,此时不返回边界。例如,当山脉为s=[3,1,2]时,则选取s[0]和s[2]作为水库边界,则蓄水量为1,此时输出:0 2:1当山脉s=[3,2,1]时,不存在合理的边界,此时输出:0。
2023-05-31 06:00:00
460
1
原创 【2023】华为OD机试真题Java CC++ Python JS Go-题目0241-组合出合法最小数
给一个数组,数组里面哦都是代表非负整数的字符串,将数组里所有的数值排列组合拼接起来组成一个数字,输出拼接成的最小的数字。
2023-05-30 06:00:00
476
Word必备工具箱 v11.70 -支持Office & WPS
2024-11-10
[Windows] Google书签自动备份
2022-08-12
[Windows] 搜狗输入法截屏+识图文字_1.0.0.222_便携版+解压版
2022-08-12
[Windows] 网管必备之ADSelfService_Plus6.1
2022-08-12
[Windows] NTFS 文件系统压缩工具 CompactGUI
2022-08-12
[Windows] 公文写作神器&素材包
2022-08-12
[Windows] 施工日志自动生成软件 - 房建工程类软件
2022-08-12
[Windows] 局域网共享修复(打印机共享修复)V.06.18
2022-08-12
[Windows] 文件蜈蚣2.0(filecxx)下载利器,功能大更新
2022-08-12
[Windows] 免费无广告字体管理器nexusfont2.7.0【最新版本】
2022-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人