2024蓝桥杯40天打卡总结
- 真题题解
- 其它
- 预估考点
- 重点复习考点
-
- 时间复杂度
- 前缀和
- 二分的两个模板
- 字符串相关 String和StringBuilder
- ArrayList HashSet HashMap相关
- 蓝桥杯Java常用算法
- 大数类BigInteger的存储与运算
- 日期相关考点及函数
- 质数
- 最小公倍数和最大公约数
- 排序库的使用
- 栈
- Math类
- 进制转换
- 补充
感悟:在整理的时候发现这40天的打卡还是很水的,真正学了的时间也就一半左右,还有一些时间只看了网课并未敲代码练习,40天也就15天左右是认真学习了的,考研不能再这样了!!!
真题题解
2023年蓝桥杯真题练习
2021、2022年蓝桥杯真题练习
2023蓝桥杯Java B组省赛:试题ABD
2023蓝桥杯Java B组省赛:试题E
2022蓝桥杯Java B组省赛:试题A
蓝桥杯 2021 省 B 特殊年份和蓝桥杯 2022 省 B 刷题统计
蓝桥杯 2020 省 B 整除序列、蓝桥杯 2019 省 B 特别数的和、蓝桥杯 2023 省 B 冶炼金属
蓝桥杯 2013 省 B 翻硬币 和 蓝桥杯 2015 省 B 移动距离
蓝桥杯 2019 省 B 等差数列
其它
Day37代码练习 数位排序&&阶乘累计和&&句子反转&&k倍区间序列
Java基础类型和输入与输出
蓝桥杯之循环问题
蓝桥杯之排序与算法问题
全排列
栈和队列
排序库的使用
字符串和StringBuilder
蓝桥杯Java常用方法
蓝桥杯eclipse Debug 技巧
CCFCSP备考整理
递归与辗转相除法
字符串排序&&大小写转换&&斐波那契数列 递归解法&&纸张尺寸问题
数字反转&&数字反转优化算法&&sort排序相关&&String字符串相关&&StringBuilder字符串相关&&HashSet相关
预估考点
前缀和 二分 字符串 质数 日期相关 最小公倍数和最小公因数
(阶乘已经连续考了两年了 感觉再考的概率不大)
重点复习考点
时间复杂度
前缀和
二分的两个模板
public class BinarySearchTemplates {
public static void main(String[] args) {
// 示例数组
int[] arr = {
1, 2, 3, 4, 5, 6};
// 目标值 k1 和 k2
int k1 = 3;
int k2 = 3;
// 使用模板一查找小于 k1 的最大元素下标
int result1 = binarySearchTemplate1(arr, k1);
// 使用模板二查找大于等于 k2 的最小元素下标
int result2 = binarySearchTemplate2(arr, k2);
// 打印结果
System.out.println("Template 1: [0, left] 区间包含小于 k 的元素,[left + 1, n - 1] 区间包含大于等于 k 的元素");
System.out.println("Result for k1 = " + k1 + ": left index = " + result1);
System.out.println();
System.out.println("Template 2: [0, left - 1] 区间包含小于 k 的元素,[left, n - 1] 区间包含大于等于 k 的元素");
System.out.println("Result for k2 = " + k2 + ": left index = " + result2);
}
/**
* 二分查找模板一:
* 在有序数组中查找小于目标值 k 的最大元素下标 left
* 然后 [0, left] 区间包含小于 k 的元素,[left + 1, n - 1] 区间包含大于等于 k 的元素
*/
public static int binarySearchTemplate1(int[] arr, int k) {
int left = 0, right = arr.length - 1;
while (left < right) {
// 计算中间值,向右取整,确保区间长度为偶数时 mid 取右端点
int mid = left + (right - left + 1) / 2;
if (arr[mid] < k) {
// 目标值在右侧
left = mid;
} else {
// 目标值在左侧或等于 mid,注意这里不减一,因为要保留可能的解
right = mid - 1;
}
}
// 循环结束后,[0, left] 区间包含小于 k 的元素,[left + 1, n - 1] 区间包含大于等于 k 的元素
return left;
}
/**
* 二分查找模板二:
* 在有序数组中查找大于等于目标值 k 的最小元素下标 left
* 然后 [0, left - 1] 区间包含小于 k 的元素,[left, n - 1] 区间包含大于等于 k 的元素
*/
public static int binarySearchTemplate2(int[] arr, int k) {
int left = 0, right = arr.length - 1;
while (left < right) {
// 计算中间值,普通二分查找取左端点
int mid = left + (right - left) / 2;
if (arr[mid] >= k) {
// 目标值在左侧或等于 mid,注意这里不减一,因为要保留可能的解
right = mid;
} else {
// 目标值在右侧
left = mid + 1;
}
}
// 循环结束后,[0, left - 1] 区间包含小于 k 的元素,[left, n - 1] 区间包含大于等于 k 的元素
return left;
}
}
字符串相关 String和StringBuilder
public class StringExample {
public static void main(String[] args) {
String str1 = "Hello,";
String str2 = " World!";
String str3 = "Hello, World!";
String subStr = "Hello";
// 获取字符串长度
int length = str3.length();
System.out.println("Length: " + length);
// 比较字符串
boolean isEqual = str1.equals(str2); // 比较两个字符串内容是否相等
boolean isIgnoreCaseEqual = str1.equalsIgnoreCase(str2); // 忽略大小写比较
int compareResult = str1.