自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝桥杯 Java B 组之记忆化搜索(滑雪问题、斐波那契数列)

是一种优化递归的方法,它利用。:存储已访问路径,避免重复计算。:存储已计算结果,避免深度递归。存储已经计算过的结果,

2025-02-25 15:52:45 409

原创 蓝桥杯 Java B 组之回溯剪枝优化(N皇后、数独)

是一种通过构造解空间树来进行问题求解的方法。其基本思想是。

2025-02-25 15:46:06 441

原创 [特殊字符] 蓝桥杯 Java B 组 之最小生成树(Prim、Kruskal) & 并查集应用

找到最小代价的连接方案,使得所有城市连通,否则返回。,且边的权重总和最小。(排序 + 并查集)

2025-02-24 21:32:28 530

原创 蓝桥杯 Java B 组之最短路径算法(Dijkstra、Floyd-Warshall)

最短路径问题是图论中的经典问题,主要用于求解。在实际应用中,最短路径广泛应用于。发送信号,计算所有节点都收到信号的。,若无法到达所有节点,返回。

2025-02-24 21:21:21 522

原创 蓝桥杯 Java B 组之背包问题(01背包、完全背包)

判断是否可以将其分割为两个子集,使得两个子集的和相等。背包问题是动态规划(DP)中一个。的情况下,最大价值是多少?的背包,每个物品有一个。: 给定不同面额的硬币。

2025-02-23 21:09:56 689

原创 蓝桥杯之阶段考核

确保 Java 开发环境、IDE(如 IntelliJ IDEA、Eclipse、VS Code)正常运行,输入输出调试正常。,考虑 O(n) 或 O(n log n) 解法;:整理本场比赛涉及的算法,找出自己薄弱的地方,强化训练。(如 O(n²) → O(n log n)),或改用。:比赛时,快速理解题意,确定题目涉及的算法类型。,比如基础遍历、贪心算法、双指针等题目。,选择最少数量的区间,使得区间。,找到其中最长递增子序列的长度。:如果某题没做出来,找出。,返回所有可能的全排列。并理解其时间复杂度。

2025-02-23 21:04:13 1021

原创 [特殊字符] 蓝桥杯 Java B 组 之位运算(异或性质、二进制操作)

给定一个非空整数数组,除了某个数字只出现一次以外,其他数字均出现两次。请找出这个只出现一次的数字。位运算是计算机底层优化的重要手段,利用二进制操作可以大大提高运算速度。,最终结果就是那个只出现一次的数字。方法 2️⃣:n & (n - 1)因此,将所有数字进行异或操作,,只使用一个变量存储结果。编写一个函数,计算一个。,只需遍历一次数组。

2025-02-22 21:24:07 832

原创 蓝桥杯 Java B 组之双指针技巧(快慢指针、滑动窗口)

双指针技巧是处理许多算法问题时常用的技巧,尤其在数组或字符串中。双指针可以帮助我们在遍历过程中减少不必要的运算,从而优化时间复杂度。双指针技巧主要分为两种常见方式:快慢指针技巧最常用于链表问题,主要思想是让两个指针以不同速度进行遍历,快速指针每次移动两步,慢速指针每次移动一步,通常用于判断链表是否有环、链表中环的入口等。问题描述: 给定一个链表,判断该链表是否有环。3. 代码解析: 我们通过定义两个指针,快指针每次移动两步,慢指针每次移动一步。 如果链表有环,快指针和慢指针一定会相遇。 时间

2025-02-22 21:20:55 1002

原创 蓝桥杯 Java B 组之背包问题、最长递增子序列(LIS)

是一种通过将复杂问题分解成更小的子问题来解决问题的算法设计思想。它主要用于解决具有。

2025-02-21 21:45:05 1143

原创 蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)

(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。它会沿着树的分支向下深入,直到节点无法继续深入为止(即叶子节点),然后返回并访问未遍历的分支。

2025-02-21 21:42:30 1087

原创 蓝桥杯 Java B 组之全排列与子集生成(掌握回溯模板)

(Backtracking Algorithm)是一种通过试探法(递归)来找出所有解法的算法。它是深度优先搜索(DFS)的一个特殊形式。在回溯过程中,我们会不断地选择并尝试每一个可能的解,当发现当前选择不合适时,我们会回退到上一步并尝试其他选项,这就是“回溯”的意义。

2025-02-20 13:52:15 779

原创 蓝桥杯 Java B 组之区间调度、找零问题(理解贪心局限性)

是一种通过。

2025-02-20 12:51:58 1006

原创 蓝桥杯 Java B 组之设计 LRU 缓存

的缓存机制,用于管理。

2025-02-19 22:01:26 651

原创 蓝桥杯 Java B 组 之堆的基础(优先队列实现 Top K 问题)

它能够快速找到最大/最小的元素,常用于: ✅。(前 K 大/小的元素),返回出现次数最多的。

2025-02-19 21:51:02 430

原创 蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)

System.out.println("索引: " + result[0] + ", " + result[1]);System.out.println("索引: " + result[0] + ", " + result[1]);if (map.containsKey(complement)) { // 如果哈希表里有这个数。输出:[0, 1] (因为 nums[0] + nums[1] = 2 + 7 = 9)

2025-02-18 21:31:49 1079

原创 蓝桥杯 Java B 组 之树的基础(二叉树遍历)

/ 递归访问左子树。// 递归访问左子树。// 递归访问左子树。System.out.print("前序遍历:");System.out.print("中序遍历:");System.out.print("后序遍历:");

2025-02-18 21:14:24 1036

原创 蓝桥杯 Java B 组之链表操作(单向链表增删查改)

给定一个单向链表,反转整个链表,使得原来的。链表(Linked List)是一种。的链表,合并它们成一个新的。

2025-02-17 11:42:12 731

原创 蓝桥杯 Java B 组 之队列的应用(BFS 入门)

给定一个 n × m 的迷宫,1 表示墙壁,0 表示可以走的路径,找到从起点 (0,0) 到终点 (n-1,m-1) 的最短路径长度(走一步算一步)。广度优先搜索(BFS):是蓝桥杯的常考算法之一,常出现在图论、迷宫等问题中,考查选手对 BFS 思想和队列操作的理解。// (x, y, 步数)广度优先搜索(BFS):一种用于遍历或搜索树或图的算法,使用队列来实现,能够保证找到的路径是最短路径。边界条件处理:在检查节点是否合法时,要考虑边界条件,如节点是否在地图范围内,避免数组越界错误。

2025-02-16 16:36:45 1119

原创 蓝桥杯 Java B 组之栈的应用(括号匹配、表达式求值)

问题描述 :给定一个只包括 `'('`,`')'`,`'{'`,`'}'`,`'['`,`']'` 的字符串,判断字符串是否有效。思路 :遍历字符串,遇到左括号就将其入栈,遇到右括号就检查栈顶元素是否为对应的左括号,如果是则出栈,否则字符串无效。思路 :遍历逆波兰表达式,遇到操作数就入栈,遇到运算符就从栈中弹出两个操作数进行运算,再将结果入栈。// 遇到操作数,入栈。栈的边界条件处理 :在入栈和出栈操作时,要注意栈空和栈满的情况,避免出现数组越界等错误。// 栈为空,遇到右括号,无效。

2025-02-16 15:39:55 863

原创 蓝桥杯 Java B 组之总结与模拟题练习

今天,我们将通过刷一些蓝桥杯的模拟题,来熟悉并巩固所学的知识,特别是动态规划的问题。给定一个数字三角形,要求从三角形的顶部到达底部的路径,使得路径上的数字和最大。需要注意的是,题目要求计算 f(n) % m,而不直接求 f(n)。从顶部的 3 开始,可以选择路径 3 -> 7 -> 4 -> 6 -> 9,路径和为 29。// 获取三角形的高度。给定正整数 n,求斐波那契数列的第 n 项,并计算其对一个数 m 的余数。// 计算下一项,先对m取余,防止结果溢出。其中,f(0) = 0,f(1) = 1。

2025-02-15 14:10:34 791

原创 蓝桥杯 Java B 组之简单动态规划(爬楼梯、斐波那契数列)

因此,如果我们想要存储从第1项到第n项的解,我们需要一个长度为n + 1的数组,这样索引范围就是从0到n。状态转移方程:dp[i] = dp[i-1] + dp[i-2],即到达第i阶的方法数等于到达第i-1阶和第i-2阶的方法数之和。初始条件:dp[1] = 1(到达第1阶只有1种方法),dp[2] = 2(到达第2阶有2种方法:1+1或2。动态规划解法,关键是通过状态转移方程f(n) = f(n-1) + f(n-2)来计算。

2025-02-15 13:22:31 789

原创 蓝桥杯 Java B 组之日期与时间计算(闰年、星期计算)

0 - 星期六, 1 - 星期日, 2 - 星期一, 3 - 星期二, 4 - 星期三, 5 - 星期四, 6 - 星期五。// ❌ 错误,月份超出范围。O(1),使用 Java 8 LocalDate 处理日期,避免手动计算。O(1),只进行几次取模计算,速度非常快。O(1),直接计算,不用循环。

2025-02-14 14:44:07 778

原创 蓝桥杯 Java B 组之简单数学问题(素数判断、最大公约数)

例子:gcd(48, 18) → gcd(18, 12) → gcd(12, 6) → gcd(6, 0) → 6。i <= sqrt;如果n能被a整除,那么n = a×b,a和b至少有一个≤√n。数学原理:gcd(a, b) = gcd(b, a % b)。O(√n),对于 n=10^9 级别问题,能高效处理 ✅。

2025-02-14 10:41:24 1002

原创 蓝桥杯 Java B 组之枚举算法(暴力破解)

System.out.println("公鸡: " + x + ", 母鸡: " + y + ", 小鸡: " + z);x++) { // ❌ 范围过大,浪费计算。:考查选手是否能够分析问题的条件,找出变量的合理取值范围,对枚举算法进行优化,避免超时。:根据问题的条件和约束,确定变量的取值范围,避免不必要的枚举,提高算法效率。:在枚举过程中,需要注意边界条件的处理,确保枚举的范围正确,不遗漏可能的解。

2025-02-13 20:40:34 706

原创 蓝桥杯 Java B 组之查找算法(线性查找、二分查找)

while (right - left > 1e-6) { // 精度控制,1e-6 可以调整精度。// 目标在左半部分。// 目标在右半部分。// 找到目标元素,返回其索引。// 找到目标,返回索引。// 若未找到目标元素,返回 -1。// 未找到目标元素。

2025-02-13 19:46:31 769

原创 蓝桥杯 Java B 组之排序算法(冒泡、选择、插入排序)

它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。:选择排序首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。:插入排序是将未排序数据插入到已排序序列的合适位置。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。输入:arr = [3, 1, 5, 6, 2, 8, 7], K = 3。

2025-02-12 14:24:39 1179

原创 蓝桥杯 Java B 组 - 第 1 周复习总结

/ 避免 nextInt() 影响字符串输入。// ❌ 没有终止条件。// 访问第一个元素。while (true) { // ❌ 没有终止条件,程序无限运行。// ✅ O(n) 复杂度。// ❌ O(n^2) 复杂度。,帮助你巩固学习内容,为后续提升打下坚实的基础!Bob 的成绩是:85。

2025-02-11 13:45:15 1075

原创 蓝桥杯JavaB组之集合框架(ArrayList、HashMap 基础操作)

在使用 get() 方法从 HashMap 中获取值时,如果键不存在,会返回 null,如果直接对返回值进行操作,可能会导致空指针异常。遍历键值对:可以使用 keySet() 方法获取所有键的集合,然后通过键获取对应的值;常用方法包括 put()、get()、remove()、size()、containsKey() 等。修改键值对:使用 put(K key, V value) 方法,如果键已经存在,则会更新对应的值。常用方法包括 add()、get()、set()、remove()、size() 等。

2025-02-11 10:31:00 1097

原创 蓝桥杯 Java B 组之函数定义与递归入门

递归三要素终止条件(Base Case):递归何时结束。递归步骤(Recursive Step):如何将问题分解为更小的子问题。问题规模缩小:每次递归调用应使问题更接近终止条件。

2025-02-10 14:41:07 990

原创 蓝桥杯JavaB组之字符串处理

/ new 关键字创建(性能较低)System.out.println(s1.equals(s2));// true(内容相同)System.out.println(s1 == s2);// false(引用不同)// ✅ O(n)(快)等方法的使用,或者手动实现字符串匹配算法,如 KMP 算法。// ❌ O(n^2)(慢)s1.equals(s2) // ✅ (比较内容)字符串匹配:KMP算法(需掌握部分匹配表构建)。

2025-02-10 13:48:22 645

原创 蓝桥杯JavaB组之数组定义与操作

**动态初始化与静态初始化**:要求根据题目给定的数据规模,灵活运用动态初始化(使用 `new` 关键字指定数组长度)和静态初始化(直接给出数组元素值)。- **排序算法**:可能要求手写排序算法,如冒泡排序、选择排序、插入排序等,也可能直接使用 Java 提供的 `Arrays.sort()` 方法。- **二维数组的不规则初始化**:除了规则的二维数组(每行元素个数相同),还可能考察不规则二维数组(每行元素个数不同)的初始化和操作。- **二分查找**:对于有序数组,二分查找是一个重要的考点。

2025-02-09 13:39:27 894

原创 斐波那契数列

输入一个整数 n ,求斐波那契数列的第 n 项。假定从 0 开始,第 0 项为 0。数据范围 0≤n≤39样例输入整数 n=5返回 5。

2025-02-08 16:17:47 156

原创 蓝桥杯Java练习题(条件语句与循环语句)

输入一个整数n(-10000 ≤ n ≤ 10000),输出反转后的数字(保留符号,去除前导零)。输入一个整数n(n ≥ 1),输出斐波那契数列的前n项(每项用空格分隔)。- **优化点**:只需遍历到√n即可,时间复杂度降为O(√n)。输入一个整数n(0 ≤ n ≤ 12),输出n的阶乘(n!- **优化技巧**:用变量滚动更新代替数组存储,节省内存。输入一个整数n(n ≥ 0),判断是否为素数(质数)。- **边界处理**:n=0或1时直接返回false。- 初始条件错误(如从F(1)=1开始)。

2025-02-08 15:41:44 270

原创 蓝桥杯java之条件语句与循环语句

条件顺序错误(如先判断year % 400 == 0,否则可能被year % 100拦截)。死循环:未正确更新循环变量(如while (i < 10) { ... }中忘记i++)。冗余条件:复杂的条件表达式可简化(如if (a > 0 && a!比较浮点数:直接使用==比较浮点数(如if (a == 0.1)),应改用误差范围判断。在 Java 中,条件语句用于控制程序的执行流程,根据特定的条件决定执行哪一部分代码。循环适合已知循环次数的场景,循环变量的初始化、条件判断和迭代都在一个语句中,结构紧凑。

2025-02-08 13:14:37 1033

原创 蓝桥杯Java之输入输出练习题

输入包含两个整数 A 和 B(-10^9 ≤ A ≤ 10^9, 1 ≤ B ≤ 1000)。第一行输入整数 A(-10^9 ≤ A ≤ 10^9),第二行输入整数 B。每行包含两个整数 A 和 B(-10^9 ≤ A, B ≤ 10^9)。输入多组数据,每组数据包含两个整数 A 和 B,计算它们的和。输入两个整数A和B(取值范围为-1e18到1e18),输出A+B的值。输入两个整数A和B(取值范围为0到1e18),输出A*B的值。输入两行,每行一个整数 A 和 B,计算 A+B。

2025-02-07 23:11:23 835

原创 蓝桥杯 Java 之输入输出

包括输入输出、数据类型、运算符,以及练习题和常见错误点

2025-02-07 19:51:04 1111

原创 程序与进程的区别

而一个进程在执行过程中,也可能需要执行多个程序段。此外,一个程序可能没有与之对应的进程(因为它尚未被执行),也可能有多个进程与之对应(例如,在多个用户同时运行同一个程序时)。1. 静态与动态:程序是指令的有序集合,是一个静态的概念,它本身没有任何运行的含义,只是存储在介质上的代码。而进程是程序在处理机上的一次执行过程,是一个动态的概念,它描述了程序在执行过程中的活动,具有自己的生命期。有状态:进程有状态,它记录了程序的执行进度,包括程序计数器(指示下一条要执行的指令)、寄存器状态、程序的输入输出状态等。

2024-12-22 10:38:48 415

原创 操作系统练习题(1)

并发指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。

2024-10-19 16:45:37 725 1

原创 操作系统知识点

操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。

2024-10-19 16:39:19 587

原创 深度优先遍历Java部分代码

移除不必要的循环:在方法中,移除do-while循环,并直接调用从给定的顶点i开始遍历。修正输出:在depthfs方法中,移除回溯时打印当前顶点i的语句,因为它不是DFS的标准输出格式,并且会导致输出混乱。优化代码结构:考虑将方法中的移到方法末尾,以确保在所有DFS遍历完成后只输出一次换行符。修正后的@Overridereturn;// 在所有DFS遍历完成后输出换行符。

2024-05-16 21:57:51 767 1

Java知识+算法+数据结构

这个资源无疑是一个宝藏,它提供了海量的算法题目以及详尽的代码示例,覆盖了Java、C语言和C++等多种编程语言,为计算机专业的学生提供了一个极佳的课后实践平台。无论是初学者还是有一定编程基础的学生,都能从中找到适合自己的题目进行练习,进一步提升自己的编程能力和代码质量。 这些题目涉及算法领域的各个方面,从基础的排序算法、搜索算法,到高级的动态规划、贪心算法,再到复杂的图论算法等,一应俱全。每一道题目都精心设计,旨在帮助学生深入理解算法的原理和应用,锻炼他们的逻辑思维和问题解决能力。 通过不断地解决这些题目,学生们不仅能够巩固课堂所学知识,还能在实践中不断摸索、总结经验,形成自己的编程风格和思路。这样的过程不仅有助于提高学生的编程水平,更能培养他们的创新精神和团队合作能力,为未来的编程实践和职业发展奠定坚实的基础。 此外,这个资源还为学生们提供了一个交流学习的平台。他们可以在这里分享自己的解题思路、代码实现和心得体会,与其他同学互相学习、共同进步。这种氛围不仅能够激发学生的学习热情,还能让他们在不断的交流中拓展视野、提升自我。

2024-04-08

蓝桥杯刷题文件(包含多道练习题)

里面包含蓝桥杯的练习题,是基础题,有题目,有代码,代码包含三种语言

2024-04-06

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

TA关注的人

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