自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 集美大学-计算机打卡(100)

3. **更新优先队列:** 对于每个条目,检查队列的大小是否等于 k。如果是,比较当前条目的频率与队列中最小频率的元素。1. **优先队列:** 创建了一个最小堆(优先队列),其中数组是其元素。该方法确保优先队列始终包含频率最高的 k 个元素,并且最小堆属性允许在大小超过 k 时高效地移除最不频繁的元素。4. **结果:** 在遍历所有条目之后,优先队列包含前 k 个频率最高的元素。2. **遍历哈希表:** 遍历哈希表的条目,其中键是数字,值是其频率。

2023-12-22 13:36:56 334

原创 集美大学-计算机打卡(99)

在这个模板中,你需要定义递归函数`backtracking`,并在其中实现对每个选择的处理。在每次递归调用结束后,需要回溯,即撤销对当前节点的处理结果,以便尝试其他选择。构造二叉搜索树的思路是每次从给定的有序数组中选择中间结点作为根节点,然后递归地构造左子树和右子树。这样可以保持二叉搜索树的性质,即左子树的所有节点值小于根节点的值,右子树的所有节点值大于根节点的值。通常用递归实现,其中在每一步都尝试所有可能的选择,然后在不满足条件的情况下回溯到上一步。backtracking(路径,选择列表);

2023-12-20 18:39:30 363

原创 集美大学-计算机打卡(88)

1. `bfs` 方法:这是执行广度优先搜索的方法。`visited` 数组,用于标记某个位置是否已经被访问过;以及起始点的坐标 `(x, y)`。3. 使用队列 `Queue`:将起始点入队,并标记为已访问。然后开始循环,每次从队列中取出一个点,探索其相邻未访问的点,将其入队并标记为已访问,直到队列为空。2. `dir` 数组:定义了四个方向,分别是向右、向下、向左、向上的移动方向。这段代码是一个广度优先搜索(BFS)的模板,用于在二维网格中寻找最短路径。这段代码可以用于解决二维网格中的最短路径问题。

2023-12-19 22:09:52 285

原创 集美大学-计算机打卡(21)

这段代码通过动态规划填充了一个二维数组,表示每个状态下的最大现金值。需要注意的是,这里假设已知交易次数 k,如果 k 足够大,可以按照一个更简单的逻辑直接计算最大利润,而无需使用动态规划。1. 使用二维dp数组,其中列坐标表示股票交易的状态,例如持有中、卖出等。dp数组的含义是手上的现金,持有股票则表示为负股票价格,卖出则表示为正股票价格。2. 股票状态由列坐标表示,奇数表示第 k 次交易持有/买入,偶数表示第 k 次交易不持有/卖出,0 表示没有进行任何操作。这段代码是一个股票交易问题的动态规划解法。

2023-12-13 12:41:00 293

原创 集美大学-计算机打卡(20)

在每一步递归中,都在合法的位置插入点号,并在完成递归后撤销插入,以确保处理所有可能性。在合法的情况下,插入点号,然后递归调用 `backTracking` 处理下一段。6. `isValid` 方法用于判断当前切割的子串是否合法,例如,是否在合法的IP地址范围内(0-255),且不以0开头,等等。2. `startIndex` 参数表示当前处理的起始位置,`dotCount` 参数表示已经插入的点号数量。5. 在递归完成后,需要撤销对字符串的修改,即删除刚才插入的点号,以便尝试其他切割方案。

2023-12-12 22:16:05 357

原创 集美大学-计算机打卡(90)

它接受一个字符类型的二维数组 `grid`,一个布尔类型的二维数组 `visited` 用于标记是否已经访问过某个位置,以及起始点的坐标 `(x, y)`。这是一个基于Java的BFS(广度优先搜索)模板代码,用于解决图论中的最短路径问题。3. 使用队列 `Queue` 存储待访问的节点。将起始点加入队列,并将其标记为已访问。- 如果相邻节点在合法范围内且未被访问过,将其加入队列,并标记为已访问。2. `dir` 数组定义了四个方向:上、右、下、左。- 遍历当前节点的上、右、下、左四个相邻节点。

2023-12-08 10:38:51 338

原创 集美大学-计算机打卡(19)

具体来说,代码通过遍历数组中的每一个位置,维护当前可达的最大区域,然后在当前覆盖的最大区域内选择下一步的位置。这样,算法保证每一步都选择了当前最有利的位置,从而达到了能否到达终点以及最小步数的要求。4. 在当前覆盖的最大区域内选择下一步的位置,更新 `curDistance` 为 `maxDistance`,并增加步数 `count`。1. 维护两个变量 `curDistance` 和 `maxDistance`,分别表示当前覆盖的最大区域和全局最大的覆盖区域。5. 重复以上步骤直到到达终点。

2023-12-05 13:25:55 347

原创 集美大学-计算机打卡(m)

如果后序遍历数组不为空,取最后一个元素作为当前节点的值。

2023-12-01 10:01:51 369 1

原创 集美大学-计算机打卡(n + n)

2. **BFS 函数:** `bfs` 函数接受一个二维网格 (`char[][] grid`)、一个布尔数组 (`boolean[][] visited`) 以及起始坐标 (`int x, int y`)。它从给定坐标开始执行 BFS。1. **初始化:** 代码初始化了一个二维数组 `dir`,表示四个可能的移动方向:右、下、左和上。- 它初始化一个队列 (`Queue<int[]> queue`) 用于跟踪待访问的单元格。- 使用 `queue` 存储当前正在处理的坐标,并将该坐标标记为已访问。

2023-11-29 14:11:28 341 1

原创 集美大学-计算机打卡(n + 1)

当分析完一个节点时,不会立即分析该节点的子节点,而是继续处理队列中的下一个节点。}`: 如果节点有右子节点,则将右子节点加入队列。}`: 如果节点有左子节点,则将左子节点加入队列。`: 获取当前层的节点数量,这是为了在内层循环中处理当前层的所有节点。`: 出队列一个节点,并将其添加到当前层的列表中。这段代码的核心思想是通过队列,逐层将节点加入队列,并在内层循环中处理每一层的节点,最终将每一层的节点值列表添加到结果中。- `while (!queue.isEmpty())`: 当队列不为空时,继续遍历。

2023-11-28 13:26:20 348

原创 集美大学-计算机打卡(n + 2)

这段代码是用于解决一个问题:判断在给定的数组 `nums` 中,是否能够通过跳跃到达数组的最后一个元素,并且返回所需的最小步数。- 如果 `maxDistance` 已经包含了数组的最后一个元素,说明再跳一步就到达了终点,此时增加步数并结束循环。- 通过遍历数组的每一步(每一个结点),更新当前覆盖的最大区域 `maxDistance`。- 在遍历到当前覆盖的最大区域时,更新下一步可达的最大区域,并增加步数。1. **思路概述:**2. **变量解释:**3. **代码解释:**4. **返回值:**

2023-11-26 18:51:17 384 1

原创 集美大学-计算机打卡n

当分析完一个节点时,不会立即分析该节点的子节点,而是继续处理队列中的下一个节点。}`: 如果节点有右子节点,则将右子节点加入队列。}`: 如果节点有左子节点,则将左子节点加入队列。`: 获取当前层的节点数量,这是为了在内层循环中处理当前层的所有节点。`: 出队列一个节点,并将其添加到当前层的列表中。这段代码的核心思想是通过队列,逐层将节点加入队列,并在内层循环中处理每一层的节点,最终将每一层的节点值列表添加到结果中。- `while (!queue.isEmpty())`: 当队列不为空时,继续遍历。

2023-11-25 21:09:56 338

原创 集美大学-计算机打卡(20)

2. **Comparator定义:** 在创建 `PriorityQueue` 的时候,通过传递一个自定义的 `Comparator` 对象来定义元素比较的规则。4. **最终结果:** 遍历完成后,最小堆中的元素就是出现频率前 k 高的元素。堆顶元素是最小的,但它是堆中频率最高的元素,而堆中其他元素都比它的频率低。- 如果堆顶元素频率较小,说明堆中的元素不是前 k 高的,可以将堆顶元素弹出,然后将当前元素加入堆中。- 如果最小堆的大小已经达到 k,比较堆顶元素的频率与当前元素的频率。

2023-11-22 21:40:52 18

原创 集美大学-计算机打卡(10)

: 这行代码表示当前背包容量为`j`时的最大价值,取决于选择当前物品(`dp[j - weight[i]] + value[i]`)和不选择当前物品(`dp[j]`)的最大值。在这里,使用一维数组`dp`表示状态,`dp[j]`表示背包容量为`j`时的最大价值。`: 初始化一维数组`dp`,表示背包容量为`0`到`bagWeight`时的最大价值,初始值为0。2. **滚动数组的思路:**

2023-11-20 12:01:14 20 1

原创 集美大学-计算机打卡(n)

这样做的时间复杂度是相对较低的,因为在每个元素入队时,我们只需要考虑其在窗口中的位置和值大小,而不需要逐个比较所有元素。栈和队列是解决各类问题的基础数据结构,而单调队列作为队列的一种特殊应用,对于滑动窗口等问题有着重要的作用。2. 第二个while循环用于保持队列的单调性,即保证队列中的元素是递减的。在实际问题中,单调队列常常用于解决滑动窗口的最值问题,其中一个典型的应用是求滑动窗口的最大值。3. 将当前元素的索引加入队列,这样队列中的索引就是窗口中的有效元素。### 单调队列的应用 - 滑动窗口最大值。

2023-11-17 20:18:54 17 1

原创 集美大学-计算机打卡

递推公式主要考虑当前状态是买入还是卖出,然后选择最优的操作。初始化时,第0天的状态需要特殊处理。遍历顺序是从前往后,利用前一天的状态更新当前状态。最终的结果是dp[prices.size() - 1][2 * k],表示最后一次卖出时的最大收益。这题是股票交易的动态规划问题,允许最多进行k次交易。我们可以通过定义一个二维的dp数组,其中dp[i][j]表示第i天的状态为j时的最大收益。状态j包括了买入、卖出等情况,通过奇偶性来区分。

2023-11-15 18:29:06 18 1

原创 集美大学-计算机打卡(9)

KMP算法中的初始化是为了构建一个部分匹配表(Partial Match Table),通常称为`next`数组或`pi`数组。它的含义是在模式串中每个位置上,最长的相等的前缀和后缀的长度。在匹配过程中,根据`next`数组的信息,可以实现跳跃式的移动,提高匹配效率。这段代码的核心逻辑是,在遍历模式串的过程中,通过比较当前字符和前一个字符,不断更新`j`的值,从而构建出`pi`数组。在匹配过程中,如果当前字符不匹配,则通过`next`数组回退到合适的位置,继续匹配。这样避免了在已经匹配的部分重新比较。

2023-11-13 17:36:41 20

原创 集美大学-计算机打卡(8)

【代码】集美大学-计算机打卡(8)

2023-11-08 12:36:25 24 1

原创 集美大学-计算机打卡(7)

获取HashMap的键集合,然后遍历每个键,并打印出键和对应的值。这是一种典型的方式来遍历HashMap的键值对。代码在打印值的过程中,每个值之间用逗号分隔。这有助于将值以逗号分隔的形式输出。循环来遍历这些值并打印出来。这是另一种遍历HashMap值的方法。是一个已经创建并初始化的HashMap对象。来获取HashMap中的所有值,并使用增强的。循环遍历HashMap的键。尚未初始化,代码将引发。

2023-11-06 18:30:42 23 1

原创 集美大学-计算机打卡(6)

这段代码用于找到链表的中间元素,特别是当你想要将链表分成两半或在中间元素上执行操作时非常有用。这是链表算法中的常见技巧,通常在各种编程任务中使用。这是一种常见的技巧,用于在链表操作中在。指针之间创建间隔,可用于各种链表操作。第二个循环开始,并持续运行,直到。指针达到链表的末尾(即。,最初都指向链表的头部。指针在链表中向前移动。

2023-11-05 12:00:40 21

原创 集美大学-计算机打卡(5)

对链表中每两个相邻节点进行交换的操作。这种操作通常用于链表中的节点交换,常用于链表的排序和反转等场景。,这表示只有在至少有两个节点的情况下才执行交换操作。在循环内部,创建了临时节点。代码片段中的循环条件是。,然后交换了当前节点。

2023-11-04 22:03:03 20 1

原创 集美大学-计算机打卡(4)

【代码】集美大学-计算机打卡(4)

2023-11-03 18:44:24 19

原创 集美大学-计算机打卡(3)

然后,为了找到环的入口点,我们再次使用一个指针(这次是从头结点开始,而不是从相遇点开始),这个指针每次前进一步,同时慢指针也每次前进一步,当它们相遇时,就找到了环的入口点。在这个方法中,首先使用慢指针和快指针,慢指针每次前进一步,快指针每次前进两步,直到它们相遇,表明存在环。这个方法的关键在于理解它的原理,并且能够推导出正确的公式,以便正确地找到入口点。

2023-11-02 11:40:31 23 1

原创 集美大学-计算机打卡(2)

一个用于遍历二维矩阵的常见方法,通常用于螺旋式遍历。这个模板是非常有用的,特别是在需要按特定顺序访问矩阵元素时,例如顺时针或逆时针遍历。这个方法可以确保您访问矩阵的每个元素,而不会遗漏或重复。

2023-11-01 15:26:26 22 1

原创 集美大学-计算机打卡(1)

【代码】集美大学-计算机打卡(1)

2023-10-31 12:27:08 28 1

原创 JAVA————第四章:面向对象(2)

在面向对象语言中,用类声明的变量称为。

2022-09-07 17:11:35 150 1

原创 JAVA————第四章:面向对象(1)

tips:实例方法既能对实力变量进行操作,也能对静态变量进行操作,类方法则不行。同理实例方法可以调用其他实例方法和类方法,类方法只能调用类方法。2.在声明变量时,用关键字static给予修饰的变量称为类变量,否则称为实例变量。小tips:提倡一行只声明一个变量(容易注释),且知道变量名就大概知道是什么意思。attention:成员变量的有效性与它在类体中书写的先后位置无关。attention:在声明类的变量是可以同时赋值,但是有点要注意。其实就类似于C语言中的函数,大括号中称为方法体。

2022-09-03 18:59:28 365 1

空空如也

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

TA关注的人

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