- 博客(110)
- 问答 (1)
- 收藏
- 关注
原创 蓝桥杯 Java B 组之记忆化搜索(滑雪问题、斐波那契数列)
是一种优化递归的方法,它利用。:存储已访问路径,避免重复计算。:存储已计算结果,避免深度递归。存储已经计算过的结果,
2025-02-25 15:52:45
409
原创 [特殊字符] 蓝桥杯 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 组 之堆的基础(优先队列实现 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
原创 程序与进程的区别
而一个进程在执行过程中,也可能需要执行多个程序段。此外,一个程序可能没有与之对应的进程(因为它尚未被执行),也可能有多个进程与之对应(例如,在多个用户同时运行同一个程序时)。1. 静态与动态:程序是指令的有序集合,是一个静态的概念,它本身没有任何运行的含义,只是存储在介质上的代码。而进程是程序在处理机上的一次执行过程,是一个动态的概念,它描述了程序在执行过程中的活动,具有自己的生命期。有状态:进程有状态,它记录了程序的执行进度,包括程序计数器(指示下一条要执行的指令)、寄存器状态、程序的输入输出状态等。
2024-12-22 10:38:48
415
原创 操作系统知识点
操作系统(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知识+算法+数据结构
2024-04-08
用HTML和css怎么做出如图所示的简历
2024-04-18
Java程序分析题,选什么?,有人可以给我解释解释吗
2023-07-05
Java程序分析题,可以跟我解释解释吗
2023-07-05
求着两道题的区别,我想知道为什么
2023-07-05
Java程序分析题,希望有人能跟我解释一下为什么吗
2023-07-05
可以给我解释一下这个为什么选这个答案吗
2023-07-04
用SQLserver命令语句回答
2023-04-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人