蓝桥杯备赛
蓝桥杯备赛
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字符大小进制转换 |