文章目录
二叉树递归笔记
1.平衡二叉树定义:
左子树是平衡二叉树,右子树是平衡二叉树。Math.abs(左子树的高度-右子树的高度)<1
2.二叉搜索树定义:
根节点>左子树的最大值,根节点<右子树的最小值
空树是二叉搜索树
3.先序遍历 (非递归)
跟左右:借助栈,1步头节点先入栈
循环:节点出栈,打印->压入右孩子->压左孩子
4.后序遍历(非递归)
根右左逆向->左右跟==后续
循环:节点出栈,打印(打印改为压入另一个备用栈)->压入右孩子->压左孩子
循环结束一次弹出打印备用栈内容
5.中序遍历(非递归)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yBvDSEeX-1639208045343)(C:\Users\57281\AppData\Roaming\Typora\typora-user-images\image-20210719004516874.png)]
图算法笔记
1.拓扑排序
循环:找入度为0的节点,去掉一个入读节点的同时,将它所指向的边也去掉
2.刷图算法时,可以熟练其中一种存储结构,其他题的不同存储结构转为自己熟悉的结构,再解题。
String刷题笔记
1.Character.isDigit('c')判断字符是否是数字,是返回ture;
2.连续数字字符串->int
if (Character.isDigit(cr)){
int num=0;
int j=i;
while (j<len&&Character.isDigit(chars[j])){
num=num*10+(chars[j++]-'0');
}
nums.push(num);
i=j-1;
}
3.累乘得sum要判断整数得范围题
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
class Solution {
public int reverse(int x) {
int tem=0;
int sum=0;
while(x!=0){
tem=x%10;
//整数最大范围2147483647
if (sum>214748364||(sum==214748364&&tem>7)){
return 0;
}
if (sum<-214748364||(sum==-214748364&&tem<-8)){ //因为绝对值要考虑负数
return 0;
}
sum=sum*10+tem;
x=x/10;
}
return sum;
}
}
动态规划
1.位运算取反符号:~
(1)提取最右边的1公式:a=01011000->a&(~a+1)
(2)左移一位:diagonals1<<1;
(3)右移一位:>>
(4)无符号右移>>> n右移一位:n=n>>>1
2.二维数组的对角线判断
a[i1][j1],a[i2][j2],即Math.abs(i1-i2)==Math.abs(j1-j2)
3.从左向右的尝试模型
从左边开始,按位思考是否尝试的两种情况进行递归
4.规定左右范围的尝试模型
特征:从左边或右边开始操作
5.决策问题
从限制为最小的情况考虑,如只有一个人,两个人开始。
暴力递归->记忆化搜索->精细化数据结构(每个格子的值是枚举行为得到的,通过分析结构,如果能省区枚举行为的话,即再精细)
学习重点
mysql调优,数据结构,jvm,垃圾回收机制,Java多线程(模拟多并发),计算机网络(网络通讯原理)。计算机组织原理(和Java多线程时间片的联系)
学习方式:看书跟着做实例。
多并发调试工具,jemeter。
简历突出自己强的点
数组
list转Arrary
ansList.stream().mapToInt(Integer::intValue).toArray();
方式:看书跟着做实例。
多并发调试工具,jemeter。
简历突出自己强的点
## 数组
list转Arrary
ansList.stream().mapToInt(Integer::intValue).toArray();