蓝桥杯备赛
蓝桥杯备赛
FANSEA蓝桥杯备赛(java组)
做题思路
- 对照数据找规律,找不出就把数据带入执行一遍
- 对照规律设计公式,思考选择什么算法:递归,dfs,dp,暴力
动态规划
- 根据问题总结递归方程
- 初始化值
- 过滤约束条件下的情况
- 利用状态转移方程求出结果
基础能力准备
闰年(366天)
| 1 | year % 4 == 0 && year % 100 !=0; //二月份有29天 | 
普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
办公软件技巧
word查找功能:ctr + F;
excel计算两年之间的天数:
数学知识储备
标准差
$$
σ=\sqrt{∑(X−μ)2 \over N}
$$
排列
$$
C^{N}_{M}={N! \over (N-M)!*M!}
$$
$$
C^{N}{M}+C^{N-1}{M}=C^{N}_{M+1}
$$
$$
C^{0}{M}+C^{1}{M}+…..+C^{M}_{M}=2^M
$$
两点截距和斜率
$$
k={y1-y2 \over x1-x2}
$$
$$
b={x1y2-x2y1 \over x1-x2}
$$
java知识储备
基础数据类型
BigInteger
存储超大数值,并做开方运算
| 1 | BigInteger two = BigInteger.valueOf(2); | 
输入输出方式
精度输出:
| 1 | float o = scanner.nextFloat(); | 
- 整数- %d:输出十进制整数。
- %x或- %X:输出十六进制整数(小写或大写)。
- %o:输出八进制整数。
 
| 1 | int num = 255; | 
- 浮点数
- %f:输出浮点数。
- %e或- %E:输出科学记数法表示的浮点数。
- %a或- %A:输出十六进制浮点数。
| 1 | double pi = 3.141592653589793; | 
数据类型方法
排序方法
| 1 | public static void main(String[] args) { | 
String和StringBuilder
subString(x,n) // [x,n)
String类型大小写转换:
| 1 | if (word.matches("[a-z]+")) { // 小写单词转大写 | 
时间类
计算两天的间隔天数
| 1 | import java.time.*; | 
常用导包
| 1 | import java.util.*; | 
队列类Queue
由链表(LinkedList)实现
| 1 | Queue queue = new LinkerList(); | 
Queue的6个方法
压入元素(添加):add()、offer()
相同:未超出容量,从队尾压入元素,返回压入的那个元素。
区别:在超出容量时,add()方法会对抛出异常,offer()返回false
弹出元素(删除):remove()、poll()
相同:容量大于0的时候,删除并返回队头被删除的那个元素。
区别:在容量为0的时候,remove()会抛出异常,poll()返回false
获取队头元素(不删除):element()、peek()
相同:容量大于0的时候,都返回队头元素。但是不删除。
区别:容量为0的时候,element()会抛出异常,peek()返回null。
阻塞队列
阻塞队列(Blocking Queue)提供了可阻塞的 put 和 take 方法,它们与可定时的 offer 和 poll 是等价的。如果队列满了 put 方法会被阻塞等到有空间可用再将元素插入;如果队列是空的,那么take 方法也会阻塞,直到有元素可用。当队列永远不会被充满时,put 方法和 take 方法就永远不会阻塞。
Map
| 1 | Map<String, String> map = new HashMap<String,String>(); | 
get方法:获取指定键(key)所对应的值(value)
put方法:将指定的键与值对应起来,并添加到集合中
使用put方法时,若指定的键(key)在集合中
remove方法:根据指定的键(key)删除元素,返回被删除元素的值(value)。
Map遍历方式:
| 1 | //获取Map中的所有key | 
字符串操作
- 查找索引
indexOf() 方法用于返回字符(串)在指定字符串中首次出现的索引位置,如果能找到,则返回索引值,否则返回 -1。该方法主要有两种重载形式:
- str.indexOf(value)
- str.indexOf(value,int fromIndex)
其中,str 表示指定字符串;
value 表示待查找的字符(串);
fromIndex 表示查找时的起始索引,如果不指定 fromIndex,则默认从指定字符串中的开始位置(即 fromIndex 默认为 0)开始查找
| 1 | String s = "Hello Java"; | 
- 根据索引查找
String 类的 charAt() 方法可以在字符串内根据指定的索引查找字符,该方法的语法形式如下:
字符串名.charAt(索引值)
提示:字符串本质上是字符数组,因此它也有索引,索引从零开始。
charAt() 方法的使用示例如下:
| 1 | String words = "today,monday,sunday"; | 
- 输入字符串转char数组
| 1 | import java.util.Scanner; | 
输入list
| 1 | int T = scanner.nextInt();//次数 | 
Math类
- 求绝对值
| 1 | Math.abs(i) | 
算法题
动态规划
| 1 | package leetCode; | 
最大公约数
| 1 | public static long gcd(long x,long y) { | 
进制转换
| 1 | c[i]^=32 //char字符大小进制转换 | 






















