=0;index--){
+ for (int rest = 0;rest<=aim;rest++){
+ int ans = Integer.MAX_VALUE;
+ for (int zhang = 0;zhang*arr[index]<=rest;zhang ++){
+ int next = dp[index+1][rest-zhang*arr[index]];
+ if (next!=Integer.MAX_VALUE){
+ ans = Math.min(ans,zhang+next);
+ }
+ }
+ dp[index][rest]=ans;
+ }
+ }
+ return dp[0][aim];
+ }
+ public static int dp2(int [] arr,int aim){
+ if (aim==0){
+ return 0;
+ }
+ int n = arr.length;
+ int[][] dp = new int[n+1][aim+1];
+ dp[n][0] = 0;
+ for (int j=1;j<=aim;j++){
+ dp[n][j]=Integer.MAX_VALUE;
+ }
+ for (int index=n-1;index>=0;index--){
+ for (int rest = 0;rest<=aim;rest++){
+ dp[index][rest]= dp[index+1][rest];
+ if (rest-arr[index]>=0
+ && dp[index][rest-arr[index]]!=Integer.MAX_VALUE){
+ dp[index][rest]=Math.min(dp[index][rest],dp[index][rest-arr[index]]+1);
+ }
+ }
+ }
+ return dp[0][aim];
+ }
+}
diff --git a/算法/learn/src/main/resources/application.properties b/算法/learn/src/main/resources/application.properties
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/算法/learn/src/main/resources/application.properties
@@ -0,0 +1 @@
+
diff --git a/算法/learn/src/test/java/com/learn/learn/LearnApplicationTests.java b/算法/learn/src/test/java/com/learn/learn/LearnApplicationTests.java
new file mode 100644
index 0000000..2344471
--- /dev/null
+++ b/算法/learn/src/test/java/com/learn/learn/LearnApplicationTests.java
@@ -0,0 +1,15 @@
+package com.learn.learn;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class LearnApplicationTests {
+ // 小和问题,数组每个元素左边比他小的数和,最后总体相加
+ // merge sort
+ // 左侧排序,左组小加和。
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/算法/learn/体系/10.排序总结、链表相关面试题.md b/算法/learn/体系/10.排序总结、链表相关面试题.md
new file mode 100644
index 0000000..4db45b3
--- /dev/null
+++ b/算法/learn/体系/10.排序总结、链表相关面试题.md
@@ -0,0 +1,8 @@
+ 快慢指针.
+
+回文
+
+面试
+ 1. 链表遍历与弹栈.
+笔试
+2. 修改右边指针往回指,分别从左右 开始遍历查看是否相同.
\ No newline at end of file
diff --git a/算法/learn/体系/11.二叉树基本算法(上).md b/算法/learn/体系/11.二叉树基本算法(上).md
new file mode 100644
index 0000000..54058fd
--- /dev/null
+++ b/算法/learn/体系/11.二叉树基本算法(上).md
@@ -0,0 +1,8 @@
+单链表环问题.
+ ## 二叉树
+ ### 先序
+ 头左右
+ ### 中序
+ 左头右
+ ### 后续
+ 左右头
\ No newline at end of file
diff --git a/算法/learn/体系/12.二叉树基本算法(下).md b/算法/learn/体系/12.二叉树基本算法(下).md
new file mode 100644
index 0000000..5fac575
--- /dev/null
+++ b/算法/learn/体系/12.二叉树基本算法(下).md
@@ -0,0 +1,9 @@
+## 用队列栈实现宽度优先遍历
+1. 队列弹出一个car并打印
+2. car有左入左,有右入右.
+## 用栈实现深度优先遍历.
+1. 栈中弹出一个car并打印.
+2. 有右入右,有做入左.
+
+
+
\ No newline at end of file
diff --git a/算法/learn/体系/13.二叉树的基本算法+二叉树的递归套路.md b/算法/learn/体系/13.二叉树的基本算法+二叉树的递归套路.md
new file mode 100644
index 0000000..9a160d5
--- /dev/null
+++ b/算法/learn/体系/13.二叉树的基本算法+二叉树的递归套路.md
@@ -0,0 +1,14 @@
+从一个节点开始,叶子节点都要,称作子树,否则称作拓扑.
+
+### 二叉树递归套路
+1. 假设以x节点为头,假设可以向x左树和x右树要任何信息
+2. 在上一步的假设下,讨论以x为头节点的数,得到答案的可能性
+3. 列出所有可能性后,确定到底需要向左树和右树要什么样的信息
+4. 把左树信息和右树信息求全集,就是任何一颗子树都需要返回的信息S
+5. 递归函数返回S,每一颗子树都这么要求
+6. 写代码,在代码中考虑如何把左树信息和右树信息整合出整课数的信息
+
+
+
+1. 思想边界提醒
+2. 代码模板化
\ No newline at end of file
diff --git a/算法/learn/体系/14.贪心算法(上).md b/算法/learn/体系/14.贪心算法(上).md
new file mode 100644
index 0000000..3b56df3
--- /dev/null
+++ b/算法/learn/体系/14.贪心算法(上).md
@@ -0,0 +1,2 @@
+理清楚问题,在做..declare问题.
+
\ No newline at end of file
diff --git a/算法/learn/体系/15.贪心算法(下).md b/算法/learn/体系/15.贪心算法(下).md
new file mode 100644
index 0000000..e69de29
diff --git a/算法/learn/体系/16.并查集及其相关题目.md b/算法/learn/体系/16.并查集及其相关题目.md
new file mode 100644
index 0000000..b774468
--- /dev/null
+++ b/算法/learn/体系/16.并查集及其相关题目.md
@@ -0,0 +1,5 @@
+ 并查集:两个是否是同一个,两个联合。
+ 往上到不能再往上,找父类.
+ 并查集扫雷,感染并查集。
+
+ 先写整体逻辑后分开写各各子实现。
\ No newline at end of file
diff --git a/算法/learn/体系/17.图.md b/算法/learn/体系/17.图.md
new file mode 100644
index 0000000..e69de29
diff --git a/算法/learn/体系/18.认识一些经典递归过程.md b/算法/learn/体系/18.认识一些经典递归过程.md
new file mode 100644
index 0000000..52b598a
--- /dev/null
+++ b/算法/learn/体系/18.认识一些经典递归过程.md
@@ -0,0 +1,7 @@
+### 暴力递归
+1. 把问题转换为规模缩小了的同类问题的子问题.
+2. 有明确的不需要继续进行递归的条件
+3. 有当得到了子问题的结果之后的决策过程
+4. 不记录每一个子问题的解.
+
+恢复现场
\ No newline at end of file
diff --git a/算法/learn/体系/19.暴力递归到动态规划(一).md b/算法/learn/体系/19.暴力递归到动态规划(一).md
new file mode 100644
index 0000000..6f6c399
--- /dev/null
+++ b/算法/learn/体系/19.暴力递归到动态规划(一).md
@@ -0,0 +1,9 @@
+记忆化搜索
+尝试策略,状态转移
+
+自然智慧
+
+### 问题1
+
+给定一个整型数组arr,代表数值不同的纸牌排成一条线,玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左边或者最右边的纸牌,玩家A和玩家B都绝顶聪明,请返回最后获胜者的分数。[50,100,20,10]
+
diff --git a/算法/learn/体系/2.认识复杂度、对数器、二分法.md b/算法/learn/体系/2.认识复杂度、对数器、二分法.md
new file mode 100644
index 0000000..fee7a6b
--- /dev/null
+++ b/算法/learn/体系/2.认识复杂度、对数器、二分法.md
@@ -0,0 +1,44 @@
+# 认识复杂度、对数器、二分法或异运算
+1. 时间复杂度
+2. 额外空间复杂度
+3. 常数项,一个操作的执行时间不以具体样本量为转移(数组寻址),每次执行时间都是固定的时间。
+### 时间复杂度
+#### 选择排序
+1. n*(看+比)+1
+2. (n-1)* n*(看+比)+1
+3. (n-2)* n*(看+比)+1
+4. 2*(n+n-1+n-2+····+1)+n 看+比 2
+5. 2an平方+bn+n+c
+6. 2an平方
+最高阶,选出最小的,从头开始放。
+#### 冒泡排序
+1. 相邻的两个比较,大的放后面,最大值在后面。
+2. n-1
+3. n-2
+4. n-3
+5. 1
+5. n平方
+#### 插入排序
+1. 最好n
+2. 最差n平方
+#### 计算时间复杂度
+1. 按照最坏的情况来
+2. 拆分为一个个基本动作
+3. 如果数据量为n,看基本动作和n之间的关系。
+4. 只把高阶项留下,低阶项和常数项去除。
+### 常数项
+### 最优解
+1. 时间复杂度
+2. 空间复杂度
+#### 常数时间操作
+1. 常见算数操作
+2. 移位、位运算
+3. 复制、比较、自增、自减操作
+4. 数组寻址操作
+#### 非常数时间操作
+1、链表LinkedList
+### 对数器
+### 局部最小值
+数据状况和问题本身梳理问题。
+二分排他性
+俩边开始找,根据趋势,二分处理。
\ No newline at end of file
diff --git a/算法/learn/体系/20.暴力递归到动态规划(二).md b/算法/learn/体系/20.暴力递归到动态规划(二).md
new file mode 100644
index 0000000..583a2f7
--- /dev/null
+++ b/算法/learn/体系/20.暴力递归到动态规划(二).md
@@ -0,0 +1,27 @@
+### 背包问题
+重量数组w[]
+价值数据v[]
+bag maxvalue int
+自由挑选货物,让背包里装的货物最多
+
+### 数字对应
+规定1对应A,2对应B,3对应C,·····,26对应Z,
+那么一个数字字符串比如‘111’就可以转换为‘AAA’,‘KA’和‘AK’
+给定一个只有数字字符串组成的字符串str,返回对少中转换结果
+### 数组转字符串
+给定一个字符串str,给定一个字符串类型的数组arr,
+出现的字符都是小写英文arr每一个字符串,代表一张贴纸,
+你可以把当个字符剪开使用,目的是拼出来str来返回需要至少
+多少贴纸可以完成任务。
+例子:str="babac",arr={"ba","c","abcd"}
+至少需要两张贴纸"ba"和"abcd",因为使用这两张贴纸,
+把每一个字符串单独剪开,含有2个a、2个b、1个c。是可以
+拼出str的。所以返回2
+### 最长公共子序列
+样本对应模型:
+
+### 模型
+1. 从左往右尝试,要不要判断
+2. 范围尝试,开头和结尾
+3. 样本对应模型,结尾
+4. 业务限制模型
\ No newline at end of file
diff --git a/算法/learn/体系/21.暴力递归到动态规划(三).md b/算法/learn/体系/21.暴力递归到动态规划(三).md
new file mode 100644
index 0000000..c4f66c6
--- /dev/null
+++ b/算法/learn/体系/21.暴力递归到动态规划(三).md
@@ -0,0 +1,14 @@
+### 回文
+给定一个字符串str,返回这个字符串的最长回文子序列(不连续,子串连续)长度
+比如:str="a12b3c43def2ghi1kpm"
+最长回文子序列是"1234321或者"123c321",返回长度7
+生成str的逆序串,两个最长的公共子序列就是所求结果.
+
+
+### 咖啡机
+给定一个数组arr,arr[i]代表第i号咖啡机泡一杯咖啡的时间
+给定一个正数N,表示N个人等着咖啡机泡咖啡,每台咖啡机只能轮流泡咖啡
+只有一台咖啡机,一次只能洗一个杯子,时间耗费a,洗完才能洗下一杯
+每个咖啡杯也可以自己挥发干净,时间耗费b,咖啡杯可以并行挥发假设所有人拿到
+咖啡之后立即喝干净,返回从开始等到所有咖啡机变干净的最短时间
+三个参数:int[]arr,in N,int a,int b
\ No newline at end of file
diff --git a/算法/learn/体系/22.暴力递归到动态规划(四).md b/算法/learn/体系/22.暴力递归到动态规划(四).md
new file mode 100644
index 0000000..835d6fb
--- /dev/null
+++ b/算法/learn/体系/22.暴力递归到动态规划(四).md
@@ -0,0 +1,25 @@
+空间压缩技巧
+
+给定一个二维数组matrix,一个人必须从左上角出发,最后到达有下角沿途只可以向下或者向右走,沿途的数字都累加就是距离
+累加和返回最小距离累加和.
+
+arr是货币数组,其中的值都是正数,再给定一个整数aim
+每个值都认为是一张货币
+即便是值相同的货币也认为每一张都是不同的,
+返回组成aim的方法数
+例如:arr={1,1,1},aim = 2;
+第0个和第1个能组成2,第1个和第2个能组成2,第0个和第二个能组成2
+一共就3种方法,所以返回3.
+
+记忆化搜索,严格表结构
+
+## 题目四
+arr是货币数组,其中的值都是正数,再给定一个正数aim.
+每个值都认为是一张货币
+认为值相同的货币没有任何不同,
+返回组成aim的方法数
+例如arr={1,2,1,1,2,1,2},aim = 4
+方法:1+1+1+1,1+1+2,2+2
+一共有三种方法返回3
+
+
\ No newline at end of file
diff --git a/算法/learn/体系/23.暴力递归到动态规划(五).md b/算法/learn/体系/23.暴力递归到动态规划(五).md
new file mode 100644
index 0000000..21976c8
--- /dev/null
+++ b/算法/learn/体系/23.暴力递归到动态规划(五).md
@@ -0,0 +1,4 @@
+枚举行为到依赖关系(依赖下一步),斜率优化.
+
+arr是面值数组,其中的值都是正数且没有重复.再给定一个正数aim.每个值都认为是一种面值,
+且认为张数是无限的.返回组成aim的最小货币数
\ No newline at end of file
diff --git a/算法/learn/体系/24.暴力递归到动态规划(六).md b/算法/learn/体系/24.暴力递归到动态规划(六).md
new file mode 100644
index 0000000..ca40373
--- /dev/null
+++ b/算法/learn/体系/24.暴力递归到动态规划(六).md
@@ -0,0 +1,65 @@
+给定一个正整数数组arr,请把arr中所有的数分成两个集合,尽量让两个集合的累加和接近.
+返回:最接近的情况下,较小集合的累加和.
+
+
+
+给定一个正整数数组arr,请把arr中所有的数分成两个集合,
+如果arr长度为偶数,两个集合包含数的个数要一样多,
+如果arr长度为奇数,两个集合包含数的个数必须只差一个
+请尽量让两个集合的累加和接近
+返回:
+最接近的情况下,较小集合的累加和
+
+
+
+## 总结
+什么暴力递归可以继续优化?
+有重复调用同一个子问题的解,这种递归可以优化
+如果每一个子问题都是不同的解,无法优化也不用优化.
+
+暴力递归和动态规划的关系:某一个暴力递归,有解的重复调用,就可以把这个暴力递归优化成动态规划
+任何动态规划问题,都一定对应着某一个有重复过程的暴力递归
+但不是所有的暴力递归,都一定对应着动态规划.
+
+面试题和动态规划的关系
+解决一个问题,可能有很多尝试方法
+可能在很多尝试方法中,又有若干个尝试方法有动态规划的方式
+一个问题可能有若干种动态规划的解法.
+
+如何找到某个问题的动态规划方式
+设计暴力递归:重要原则+4中常见尝试模型!重点!
+分析有没有重复解:套路解决
+用记忆搜索(缓存,搜索o1就是最优解否则表依赖)->用严格表结构实现动态规划:套路解决
+看看能否继续优化:套路解决
+
+面试中暴力递归过程的原则
+1. 每一个可变参数的类型,一定不要比int类型更加复杂
+2. 原则1.可以违反,让类型突破到一维线性结构,那必须是单一可变参数
+3. 如果发现原则1.被违反,但不违反原则2.,只需要做记忆搜索即可
+4. 可变参数的个数,能少则少.
+
+知道了面试中设计暴力递归过程的原则,然后呢
+一定要逼自己找到不违反原则情况下的暴力尝试
+如果你找到暴力尝试,不符合原则,马上舍弃,找新的.
+如果某个题目突破了设计原则,一定极难极难,面试中的概率低于5%
+
+暴力递归到动态规划的套路
+1. 你已经有了一个不违反原则的暴力递归,而且的确存在解的重复调用
+2. 找到那些参数的变化会影响返回值,对每一个列出变化范围
+3. 参数间的所有组合数量,意味着表大小
+4. 记忆化搜索的方法就是傻缓存,非常容易得到
+5. 规定好严格表的大小,分析位置的依赖顺序,然后从基础填写到最终解
+6. 对于有枚举行为的决策过程,进一步优化.
+
+动态规划的进一步优化
+1. 空间压缩
+2. 状态化简
+3. 四边形不等式
+4. 其他优化技巧
+
+## N皇后问题
+在N*N的棋盘上要摆N个皇后,要求任何两个皇后不同行,不同列,也不在同一条斜线上
+给定一个整数n,返回n皇后的摆法有多少种.
+n=1 返回1
+n=2或3,2皇后和3皇后无论怎么摆都不行,返回0
+n=8,返回92
\ No newline at end of file
diff --git a/算法/learn/体系/25.窗口内最大值或最小值的更新结构.md b/算法/learn/体系/25.窗口内最大值或最小值的更新结构.md
new file mode 100644
index 0000000..0df017c
--- /dev/null
+++ b/算法/learn/体系/25.窗口内最大值或最小值的更新结构.md
@@ -0,0 +1,31 @@
+逻辑能力
+
+题目一
+假设一个固定大小为W的窗口,一次划过arr,
+返回每一次滑出状况的最大值
+例如,arr=[4,3,5,4,3,3,6,7],W=3
+返回:[5,5,5,4,6,7]
+
+题目二
+给定一个整型数组arr,和一个整数num
+某个arr中的子数组sub,如果想达标,必须满足:
+sub中最大值-sub中最小值<=num
+返回arr中达标子数组的数量.
+
+题目三
+汽车从那几个位置逆时针走能加满油
+gas [1,1,3,1]
+cost [2,2,1,1]
+自己整理个数组,最终和为0表示能跑完 [-1,-1,2,0]
+累加和,计算最终结果大于0 [-1,-2,0,0,-1,-3,-3,-3]
+
+题目四
+arr是货币数组,其中的值都是正数,在给定一个正数aim
+每个值都认为是一张货币
+返回组成aim的最少货币数
+注意:
+因为是求最少货币数,所以每一张货币认为是相同或者不同都不重要了.
+
+
+枚举行为用邻近位置代替.
+
\ No newline at end of file
diff --git a/算法/learn/体系/26.单调栈结构.md b/算法/learn/体系/26.单调栈结构.md
new file mode 100644
index 0000000..fed7496
--- /dev/null
+++ b/算法/learn/体系/26.单调栈结构.md
@@ -0,0 +1,12 @@
+一个数组,输出每个位置,左侧第一个比他小的位置,右侧第一个比他小的数.
+放入从小到大的栈中,相同放到一个数据放入栈中,每次弹出是结算.
+
+题目一 给定一个只包含正数的数组arr,arr中任何一个子数组sub,一定都可以算出(sub累加和)*(sub中的最小值)是什么,
+那么所有子数组中,这个值最大是多少.
+
+以每一个位置做最小值,计算数据
+
+第一行为底,转直方图,转单调栈.第二行为底第一行为顶计算
+
+题目五
+给定以个二维数组matrix,其中的值不是0就是1,返回全部由1组成的子矩形数量.
\ No newline at end of file
diff --git a/算法/learn/体系/27.单调栈(续)、由斐波那契数列讲述矩阵快速幂技巧.md b/算法/learn/体系/27.单调栈(续)、由斐波那契数列讲述矩阵快速幂技巧.md
new file mode 100644
index 0000000..e475f4b
--- /dev/null
+++ b/算法/learn/体系/27.单调栈(续)、由斐波那契数列讲述矩阵快速幂技巧.md
@@ -0,0 +1,36 @@
+求裴波那契数列矩阵乘法的方法
+1)裴波那契数列的线性求解(O(N))的方式求解非常好理解
+2)利用线性代数,也可以改写另一种表示
+|F(N),F(N-1)|=|F(2),F(1)|*某个二阶矩阵的N-2次方
+3)求出这个二阶矩阵,进而最快求出这个二阶矩阵的N-2次方.
+
+
+题目四
+第一年农场有1只成熟的母牛A,往后的每年:
+1)每一只成熟的母牛都会生一只母牛
+2)每一只新出生的母牛都在出生的第三年成熟
+3)每一只母牛永远不会死
+返回n年后的数量.F(n)=F(n-1)+F(n-3)
+ |a b c|
+|4 3 2|=|3 2 1|* |d e f|
+ |g h i|
+
+3a+2d+1g = 4
+3b+2e+1h = 3
+3c+2f+1i = 2
+
+
+ |a b c|
+|6 4 3|=|4 3 2|* |d e f|
+ |g h i|
+
+4a+3d+2g = 6
+4b+3e+2h = 4
+4c+3f+2i = 3
+
+
+n-3
+
+题目五
+给定一个数N,想象
+F(n)=F(n-1)+f(n-2)
\ No newline at end of file
diff --git a/算法/learn/体系/28.KMP算法.md b/算法/learn/体系/28.KMP算法.md
new file mode 100644
index 0000000..22485aa
--- /dev/null
+++ b/算法/learn/体系/28.KMP算法.md
@@ -0,0 +1,4 @@
+KMP算法(全称Knuth-Morris-Pratt字符串查找算法,由三位发明者的姓氏命名)是可以在文本串s中快速查找模式串p的一种算法。
+
+求解next数组匹配加速.
+next数组比对往右跳.
\ No newline at end of file
diff --git a/算法/learn/体系/29.Manacher算法.md b/算法/learn/体系/29.Manacher算法.md
new file mode 100644
index 0000000..35ac131
--- /dev/null
+++ b/算法/learn/体系/29.Manacher算法.md
@@ -0,0 +1,11 @@
+求回文子串(连续)
+
+121aaaa2323aa
+1. 数字两边插入数值 #1#2#1#a#a#a#a#2#3#2#3#a#a#
+回文半径/直径,回文半径数组,最右回文边界,取的最右回文边界的中心
+
+
+1. 如果i在R外,暴力扩
+2. 如果i在R内,i`在L R内 O(1)
+ i`在L R外 O(1)
+ i`在L压线
diff --git a/算法/learn/体系/3.异或运算相关面试题.md b/算法/learn/体系/3.异或运算相关面试题.md
new file mode 100644
index 0000000..34b1f28
--- /dev/null
+++ b/算法/learn/体系/3.异或运算相关面试题.md
@@ -0,0 +1,3 @@
+## 异或运算
+无进位相加,满足结合律和交换率
+
\ No newline at end of file
diff --git a/算法/learn/体系/30.bfprt算法、蓄水池算法.md b/算法/learn/体系/30.bfprt算法、蓄水池算法.md
new file mode 100644
index 0000000..e043c0d
--- /dev/null
+++ b/算法/learn/体系/30.bfprt算法、蓄水池算法.md
@@ -0,0 +1,17 @@
+在无序数组中求第K小的数
+1. 改写快排的方法
+2. bfprt算法
+
+
+1)随机选p
+2)分区p
+3)命中返回,未命中,选左边或者右边.
+
+题目
+给定一个无序数组arr中,给定一个正数k,返回top k个最大的数不同时间复杂度三个方法:
+1) o(N*logN)
+2) o(N+K*logN)
+3) o(N+K*logK)
+
+蓄水池算法
+等概率进袋子.
\ No newline at end of file
diff --git a/算法/learn/体系/31.Morris遍历.md b/算法/learn/体系/31.Morris遍历.md
new file mode 100644
index 0000000..b4d086f
--- /dev/null
+++ b/算法/learn/体系/31.Morris遍历.md
@@ -0,0 +1,11 @@
+Morris遍历细节
+假设来到当前节点cur,开始时cur来到头结点的位置
+1) 如果cur没有左孩子,cur向右移动(cur=cur.right)
+2) 如果cur有左孩子,找到左子树上最右的节点mostRight:
+ a. 如果mostRight的右指针指向空,让其指向cur,然后cur向左移动(cur=cur.left)
+ b. 如果mostRight的右指针指向cur,让其指向null,然后cur向右移动(cur = cur.right)
+3) cur为空时停止遍历
+
+
+
+需要左右树信息强整合则必须二叉树递归套路,否则,可以用Morris遍历.
\ No newline at end of file
diff --git a/算法/learn/体系/32.线段.md b/算法/learn/体系/32.线段.md
new file mode 100644
index 0000000..b437fb0
--- /dev/null
+++ b/算法/learn/体系/32.线段.md
@@ -0,0 +1,8 @@
+i
+父i/2
+左2*i
+右2*i+1
+
+懒更新
+
+俄罗斯方块
diff --git a/算法/learn/体系/33.IndexTree、AC自动机.md b/算法/learn/体系/33.IndexTree、AC自动机.md
new file mode 100644
index 0000000..4902fda
--- /dev/null
+++ b/算法/learn/体系/33.IndexTree、AC自动机.md
@@ -0,0 +1,15 @@
+通过数据范围猜算法.
+IndexTree
+特点
+1) 支持区间查询
+2) 没有线段树那么强,但是非常容易改成一维,二维,三维的结构
+3) 只支持单点更新
+下标从1开始,
+下标托管,二进制,最后一位1变为0并加1,管理到自身.
+
+AC自动机
+前缀数
+1) 头节点fail指针指空
+2) 头结点的子节点指头
+3) 某一个节点x,父节点通过&指向自己,父节点的file指针指向甲,甲有直接指向x的指针,则直接指过去,否则看甲的file指针,
+如果一直没有找到则指向头节点
\ No newline at end of file
diff --git a/算法/learn/体系/34.与哈希函数有关的结构.md b/算法/learn/体系/34.与哈希函数有关的结构.md
new file mode 100644
index 0000000..b6842eb
--- /dev/null
+++ b/算法/learn/体系/34.与哈希函数有关的结构.md
@@ -0,0 +1,3 @@
+一致性hash
+虚拟节点
+
\ No newline at end of file
diff --git a/算法/learn/体系/35.资源限制类题目的解题套路.md b/算法/learn/体系/35.资源限制类题目的解题套路.md
new file mode 100644
index 0000000..2764d59
--- /dev/null
+++ b/算法/learn/体系/35.资源限制类题目的解题套路.md
@@ -0,0 +1,14 @@
+ 1) 布隆过滤器用于集合的建立与查询,并可以节省大量空间
+ 2) 一致性哈希解决数据服务器负载管理问题
+ 3) 利用并查集结构做岛问题的并行计算
+ 4) 哈希函数可以把数据按照种类均匀分流(相同的数据一定在一块)
+ 5) 位图解决某一范围上数字的出现情况,并可以节省大量空间
+ 6) 利用分段统计思想,并进一步节省大量空间
+ 7) 利用堆,外排序来做多个处理单元的结果合并
+
+## 4
+100G的数字文件取出出现次数最多的前100个数字.
+
+将100G利用Hash分为100个文件,将每个文件里的数据统计(相同的数据必定进入同一个文件),
+取出每个文件的第一个数据,统计拿出第一个,这个就是想要的第一个数字,第一数字从那个文件中拿出,
+去原来文件拿第二个统计,取出第一个,一簇循环取出100个
\ No newline at end of file
diff --git a/算法/learn/体系/36.有序表(上).md b/算法/learn/体系/36.有序表(上).md
new file mode 100644
index 0000000..8edbbd0
--- /dev/null
+++ b/算法/learn/体系/36.有序表(上).md
@@ -0,0 +1,3 @@
+数据库索引,有序表.
+AVL树:左树高度和右树高度差小于2
+默认无相同的值
\ No newline at end of file
diff --git a/算法/learn/体系/37.有序表(中).md b/算法/learn/体系/37.有序表(中).md
new file mode 100644
index 0000000..26f9c5e
--- /dev/null
+++ b/算法/learn/体系/37.有序表(中).md
@@ -0,0 +1,5 @@
+## size-balance
+TreeMap
+TreeSet
+## 跳表
+
diff --git a/算法/learn/体系/38.有序表(下).md b/算法/learn/体系/38.有序表(下).md
new file mode 100644
index 0000000..162dfd0
--- /dev/null
+++ b/算法/learn/体系/38.有序表(下).md
@@ -0,0 +1,3 @@
+题目一
+给定一个数组arr,和两个整数a和b(a<=b),求arr中有多少个子数组,累加和在[a,b]这个范围上,返回达标
+的子数组数量.
\ No newline at end of file
diff --git a/算法/learn/体系/39.根据对数器找规律、根据数据量猜解法.md b/算法/learn/体系/39.根据对数器找规律、根据数据量猜解法.md
new file mode 100644
index 0000000..8e0f394
--- /dev/null
+++ b/算法/learn/体系/39.根据对数器找规律、根据数据量猜解法.md
@@ -0,0 +1,8 @@
+https://shimo.im/docs/68cd6h3TwygPwx8W/read
+1) 某个面试题如果输入简单,并且只有一个实际参数
+2) 要求的返回值类型也简单,并且只有一个
+3) 用暴力方法,把输入参数对应的返回值,打印出来看看,进而优化code
+## 根据数据规模猜解法
+1) C/C++,一秒处理的指令数为10的8次方
+2) Java等语言,1~4秒处理的指令条数为10的8次方
+3) 这就是有大量的空间了.
diff --git a/算法/learn/体系/4.一些基础的数据结构.md b/算法/learn/体系/4.一些基础的数据结构.md
new file mode 100644
index 0000000..0d8e400
--- /dev/null
+++ b/算法/learn/体系/4.一些基础的数据结构.md
@@ -0,0 +1,54 @@
+1. 单链表、双向链表
+2. 栈队列
+## 数组做队列
+1. 数组固定长度,两个指针追赶。只用一个元素时不好实现。
+2. 添加变量队列元素个数。begin和end解耦。
+## 栈随时获取最小值
+1. 数据栈
+2. 最小栈(弹出后依然能获取最小值)
+3. 压栈,数据栈正常压入,最小栈如果压入数小于栈顶则亚如当前数,如果大于则重复压入栈顶。
+4. 弹出同步弹出。
+
+## 图优先遍历
+深度优先遍历:栈
+宽度优先遍历:队列
+## 栈实现队列
+1. 设置push栈和pop栈,两个来回倒,push压入,弹出时push中的数据放入pop中,从pop中弹出。(一次性倒完,)
+## 队列实现栈
+1. 压栈放入一个队列中,需要弹栈的时候将全部放入另一个队列中,留下最后一个弹出。
+2. 再次放入,再放在当前队列中存入,弹出的时候,再次导入另一个队列中,最后一个弹出。
+## 递归
+### 递归改非递归
+使用系统栈。树遍历。
+递归到动态规划。
+大化小,递归图。
+## Master公式分析递归时间复杂度
+子问题规模一致
+## 哈希表 HashMap
+## 有序表 TreeMap
+## 归并排序
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/算法/learn/体系/40.根据数据量猜解法(续)、卡特兰数.md b/算法/learn/体系/40.根据数据量猜解法(续)、卡特兰数.md
new file mode 100644
index 0000000..626c827
--- /dev/null
+++ b/算法/learn/体系/40.根据数据量猜解法(续)、卡特兰数.md
@@ -0,0 +1 @@
+A可以完全映射到B,B可以完全映射到A,一一映射 ,则AB相同
\ No newline at end of file
diff --git a/算法/learn/体系/41.子数组达到规定累加和的最大长度系列问题.md b/算法/learn/体系/41.子数组达到规定累加和的最大长度系列问题.md
new file mode 100644
index 0000000..990467e
--- /dev/null
+++ b/算法/learn/体系/41.子数组达到规定累加和的最大长度系列问题.md
@@ -0,0 +1,28 @@
+窗口问题一般都存在单调性.
+
+利用单调性优化
+利用预处理结构优化+讨论来头或结尾.
+假设答案法+淘汰可能性.
+
+题目四
+给定一个数组arr,给定一个值v,求子数组平均值小于等于v的最长子数组长度.
+原数组每个值减去10,累加和中小于等于0的最长子数组长度.
+
+
+题目五
+给定一个正方形矩阵matrix,原地调整(绕中心位置转动)成顺时针90度转动的样子
+a b c g d a
+d e f h e b
+g h i i f c
+
+从外往里,一圈一圈执行.
+
+圈结构
+
+https://www.amysecure.com/clientarea.php
+
+byware.io
+clash
+
+
+
diff --git a/算法/learn/体系/42.四边形不等式技巧(上).md b/算法/learn/体系/42.四边形不等式技巧(上).md
new file mode 100644
index 0000000..c13f023
--- /dev/null
+++ b/算法/learn/体系/42.四边形不等式技巧(上).md
@@ -0,0 +1,8 @@
+四边形不等式技巧特征
+1. 两个可变参数的区间划分问题
+2. 每个格子有枚举行为
+3. 当两个可变参数固定一个,另一个参数和答案之间存在单调性关系
+4. 而且往往是反向单调关系
+5. 枚举加速的位置对:上➕右,或者,左➕下
+6. 不要证明!用对数器验证!
+7. 可以把时间复杂度降低一阶
\ No newline at end of file
diff --git a/算法/learn/体系/43.四边形不等式技巧(下).md b/算法/learn/体系/43.四边形不等式技巧(下).md
new file mode 100644
index 0000000..b7c785e
--- /dev/null
+++ b/算法/learn/体系/43.四边形不等式技巧(下).md
@@ -0,0 +1,17 @@
+## 邮局问题:
+## 扔棋子问题
+不能用二分,必须完成任务.
+f(n,k)
+n还剩多少层楼要测试,k还剩多少棋子.
+
+# 四边形不等式技巧特征
+1. 两个可变参数的区间划分问题
+2. 每个格子有枚举行为
+3. 当两个可变参数固定一个,另一个参数和答案之间存在单调性关系(两个参数和结果关系)
+4. 而且往往是反向单调关系
+5. 能否获得枚举指导的位置对:上➕右,或者左➕下
+# 四边形不等式技巧注意点
+1. 不要证明用对数器验证
+2. 枚举的时候面对最优答案相等的时候怎么处理?都试试
+3. 可以把时间复杂度降低一阶
+4. 四边形不等式有些时候是最优解,有些时候不是,不是的原因:尝试思路,在根儿上不够好
\ No newline at end of file
diff --git a/算法/learn/体系/44.状态压缩的动态规划.md b/算法/learn/体系/44.状态压缩的动态规划.md
new file mode 100644
index 0000000..e210d7c
--- /dev/null
+++ b/算法/learn/体系/44.状态压缩的动态规划.md
@@ -0,0 +1,2 @@
+## 题目三
+你有无限的1*2的砖块,要铺满M*N的区域,不同的铺法有多少种
\ No newline at end of file
diff --git a/算法/learn/体系/45.DC3生成后缀数组详解.md b/算法/learn/体系/45.DC3生成后缀数组详解.md
new file mode 100644
index 0000000..fe3f11e
--- /dev/null
+++ b/算法/learn/体系/45.DC3生成后缀数组详解.md
@@ -0,0 +1 @@
+分三类,S12类排序,
\ No newline at end of file
diff --git a/算法/learn/体系/46.后缀数组解决的面试题.md b/算法/learn/体系/46.后缀数组解决的面试题.md
new file mode 100644
index 0000000..362f236
--- /dev/null
+++ b/算法/learn/体系/46.后缀数组解决的面试题.md
@@ -0,0 +1,3 @@
+## 题目一
+给定两个字符串str1和str2,想把str2整体插入到str1的某个位置,形成最大的字典序,返回字典序最大的结果.
+
diff --git a/算法/learn/体系/47.动态规划猜法中和外部信息简化的相关问题(上).md b/算法/learn/体系/47.动态规划猜法中和外部信息简化的相关问题(上).md
new file mode 100644
index 0000000..e69de29
diff --git a/算法/learn/体系/48.动态规划猜法中和外部信息简化的相关问题(下).md b/算法/learn/体系/48.动态规划猜法中和外部信息简化的相关问题(下).md
new file mode 100644
index 0000000..e69de29
diff --git a/算法/learn/体系/5.归并排序及相关面试题.md b/算法/learn/体系/5.归并排序及相关面试题.md
new file mode 100644
index 0000000..c190ee4
--- /dev/null
+++ b/算法/learn/体系/5.归并排序及相关面试题.md
@@ -0,0 +1,6 @@
+## 递归排序
+1. 归并分两边排序
+2. 合并,左右比较放入一个新的数据做那个
+## 归并
+1. 步长从1开始增加到数组长度。
+2. merge sort 把需要比较的数据变成有序的信息。
\ No newline at end of file
diff --git a/算法/learn/体系/6.归并排序附加题、随机快速排序.md b/算法/learn/体系/6.归并排序附加题、随机快速排序.md
new file mode 100644
index 0000000..e435768
--- /dev/null
+++ b/算法/learn/体系/6.归并排序附加题、随机快速排序.md
@@ -0,0 +1 @@
+52:28
\ No newline at end of file
diff --git a/算法/learn/体系/8.加强堆.md b/算法/learn/体系/8.加强堆.md
new file mode 100644
index 0000000..9441f7f
--- /dev/null
+++ b/算法/learn/体系/8.加强堆.md
@@ -0,0 +1,2 @@
+重复线段问题.
+1. 取.5判断多少线段包含.
\ No newline at end of file
diff --git a/算法/learn/体系/9.前缀树、不基于比较的排序、排序稳定性.md b/算法/learn/体系/9.前缀树、不基于比较的排序、排序稳定性.md
new file mode 100644
index 0000000..602466b
--- /dev/null
+++ b/算法/learn/体系/9.前缀树、不基于比较的排序、排序稳定性.md
@@ -0,0 +1,3 @@
+ 前缀数:记录字符串出现频率.pass,end
+ 桶排序
+ 基数排序,按照个十百钱位 排序
\ No newline at end of file
diff --git a/算法/learn/体系/img/19-3.png b/算法/learn/体系/img/19-3.png
new file mode 100644
index 0000000..1e90dd4
Binary files /dev/null and b/算法/learn/体系/img/19-3.png differ
diff --git a/算法/learn/体系/img/43.扔棋子第0-1层.png b/算法/learn/体系/img/43.扔棋子第0-1层.png
new file mode 100644
index 0000000..62f5d8e
Binary files /dev/null and b/算法/learn/体系/img/43.扔棋子第0-1层.png differ
diff --git a/算法/learn/体系/img/43.扔棋子第0层.png b/算法/learn/体系/img/43.扔棋子第0层.png
new file mode 100644
index 0000000..10ca803
Binary files /dev/null and b/算法/learn/体系/img/43.扔棋子第0层.png differ
diff --git a/算法/learn/体系/img/43.扔棋子第i层.png b/算法/learn/体系/img/43.扔棋子第i层.png
new file mode 100644
index 0000000..0ca76d1
Binary files /dev/null and b/算法/learn/体系/img/43.扔棋子第i层.png differ
diff --git a/算法/learn/体系/img/43.扔棋子转四边形不等式.png b/算法/learn/体系/img/43.扔棋子转四边形不等式.png
new file mode 100644
index 0000000..13757ec
Binary files /dev/null and b/算法/learn/体系/img/43.扔棋子转四边形不等式.png differ
diff --git a/算法/learn/体系/img/45.DC3后缀树.png b/算法/learn/体系/img/45.DC3后缀树.png
new file mode 100644
index 0000000..44237ee
Binary files /dev/null and b/算法/learn/体系/img/45.DC3后缀树.png differ
diff --git a/算法/learn/体系/img/45.DC3后缀树1.png b/算法/learn/体系/img/45.DC3后缀树1.png
new file mode 100644
index 0000000..a829926
Binary files /dev/null and b/算法/learn/体系/img/45.DC3后缀树1.png differ
diff --git a/算法/learn/体系/img/45.DC3后缀树2.png b/算法/learn/体系/img/45.DC3后缀树2.png
new file mode 100644
index 0000000..1e5a8e4
Binary files /dev/null and b/算法/learn/体系/img/45.DC3后缀树2.png differ
diff --git a/算法/learn/体系/img/45.DC3后缀树分三份.png b/算法/learn/体系/img/45.DC3后缀树分三份.png
new file mode 100644
index 0000000..60e6ab2
Binary files /dev/null and b/算法/learn/体系/img/45.DC3后缀树分三份.png differ
diff --git a/算法/learn/体系/img/46.后缀数组使用.png b/算法/learn/体系/img/46.后缀数组使用.png
new file mode 100644
index 0000000..847288d
Binary files /dev/null and b/算法/learn/体系/img/46.后缀数组使用.png differ
diff --git a/算法/learn/体系/img/mincoinsnolimit.png b/算法/learn/体系/img/mincoinsnolimit.png
new file mode 100644
index 0000000..548c86b
Binary files /dev/null and b/算法/learn/体系/img/mincoinsnolimit.png differ
diff --git a/算法/learn/体系/img/twentythird/killmonster.png b/算法/learn/体系/img/twentythird/killmonster.png
new file mode 100644
index 0000000..5470d8a
Binary files /dev/null and b/算法/learn/体系/img/twentythird/killmonster.png differ
diff --git a/算法/learn/体系/img/twentythird/mincoinsnolimit.png b/算法/learn/体系/img/twentythird/mincoinsnolimit.png
new file mode 100644
index 0000000..548c86b
Binary files /dev/null and b/算法/learn/体系/img/twentythird/mincoinsnolimit.png differ
diff --git a/算法/learn/体系/img/二叉树排序.png b/算法/learn/体系/img/二叉树排序.png
new file mode 100644
index 0000000..95ef543
Binary files /dev/null and b/算法/learn/体系/img/二叉树排序.png differ
diff --git a/算法/learn/体系/img/二叉树递归.png b/算法/learn/体系/img/二叉树递归.png
new file mode 100644
index 0000000..8f86eb8
Binary files /dev/null and b/算法/learn/体系/img/二叉树递归.png differ
diff --git a/算法/learn/体系/img/人员能力.png b/算法/learn/体系/img/人员能力.png
new file mode 100644
index 0000000..5625f47
Binary files /dev/null and b/算法/learn/体系/img/人员能力.png differ
diff --git a/算法/learn/体系/img/代理.png b/算法/learn/体系/img/代理.png
new file mode 100644
index 0000000..c6a57ca
Binary files /dev/null and b/算法/learn/体系/img/代理.png differ
diff --git a/算法/learn/体系/img/创建多个hash函数.png b/算法/learn/体系/img/创建多个hash函数.png
new file mode 100644
index 0000000..aec3fea
Binary files /dev/null and b/算法/learn/体系/img/创建多个hash函数.png differ
diff --git a/算法/learn/体系/img/卡特兰数.png b/算法/learn/体系/img/卡特兰数.png
new file mode 100644
index 0000000..d53d727
Binary files /dev/null and b/算法/learn/体系/img/卡特兰数.png differ
diff --git a/算法/learn/体系/img/布隆过滤器计算.png b/算法/learn/体系/img/布隆过滤器计算.png
new file mode 100644
index 0000000..3be23ea
Binary files /dev/null and b/算法/learn/体系/img/布隆过滤器计算.png differ
diff --git a/算法/learn/体系/img/常数时间.png b/算法/learn/体系/img/常数时间.png
new file mode 100644
index 0000000..1d9c694
Binary files /dev/null and b/算法/learn/体系/img/常数时间.png differ
diff --git a/算法/learn/体系/img/归并merge.png b/算法/learn/体系/img/归并merge.png
new file mode 100644
index 0000000..8be85ef
Binary files /dev/null and b/算法/learn/体系/img/归并merge.png differ
diff --git a/算法/learn/体系/img/手写/2.认识复杂度.jpg b/算法/learn/体系/img/手写/2.认识复杂度.jpg
new file mode 100644
index 0000000..ad06d8d
Binary files /dev/null and b/算法/learn/体系/img/手写/2.认识复杂度.jpg differ
diff --git a/算法/learn/体系/img/排序算法总结.png b/算法/learn/体系/img/排序算法总结.png
new file mode 100644
index 0000000..778bfe0
Binary files /dev/null and b/算法/learn/体系/img/排序算法总结.png differ
diff --git a/算法/learn/体系/img/斐波那契数列.png b/算法/learn/体系/img/斐波那契数列.png
new file mode 100644
index 0000000..5e99af3
Binary files /dev/null and b/算法/learn/体系/img/斐波那契数列.png differ
diff --git a/算法/learn/体系/img/斐波那契数列2.png b/算法/learn/体系/img/斐波那契数列2.png
new file mode 100644
index 0000000..943ce5b
Binary files /dev/null and b/算法/learn/体系/img/斐波那契数列2.png differ
diff --git a/算法/learn/体系/img/算法复杂度.png b/算法/learn/体系/img/算法复杂度.png
new file mode 100644
index 0000000..a6f7980
Binary files /dev/null and b/算法/learn/体系/img/算法复杂度.png differ
diff --git a/算法/learn/体系/堆和堆排序.md b/算法/learn/体系/堆和堆排序.md
new file mode 100644
index 0000000..34c1ae6
--- /dev/null
+++ b/算法/learn/体系/堆和堆排序.md
@@ -0,0 +1,10 @@
+比较器返回为负数,第一个在前.
+左节点2*i+1
+右节点2*i+2
+父节点(i-1)/2
+## 堆
+完全二叉树.
+
+PriorityQueue默认小根堆
+
+
\ No newline at end of file
diff --git a/算法/learn/体系/快排.md b/算法/learn/体系/快排.md
new file mode 100644
index 0000000..5980ab3
--- /dev/null
+++ b/算法/learn/体系/快排.md
@@ -0,0 +1 @@
+指针指向及移动.
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/Eighteen.md b/算法/learn/大厂刷题/Eighteen.md
new file mode 100644
index 0000000..a28a2ab
--- /dev/null
+++ b/算法/learn/大厂刷题/Eighteen.md
@@ -0,0 +1,21 @@
+## 题目一
+给定一个数组arr,长度为N,arr中值只有1,2,3三种
+arr[i]==1,代表汉诺塔问题中,从上往下第i个圆盘目前在左
+arr[i]==2,代表汉诺塔问题中,从上往下第i个圆盘目前在中
+arr[i]==3,代表汉诺塔问题中,从上往下第i个圆盘目前在右
+那么arr整体就代表汉诺塔游戏过程中的一个状态
+如果这个状态不是汉诺塔最优解运动过程中的状况,返回-1
+如果这个状况是汉诺塔最优解运动过程中的状况,返回他是第几个状况
+
+## 题目二
+https://leetcode-cn.com/problems/shortest-bridge/?utm_source=LCUS&utm_medium=ip_redirect&utm_campaign=transfer2china
+## 题目三
+https://www.nowcoder.com/questionTerminal/8ecfe02124674e908b2aae65aad4efdf
+## 題目四
+https://www.nowcoder.com/practice/7201cacf73e7495aa5f88b223bbbf6d1
+
+
+
+
+
+
diff --git a/算法/learn/大厂刷题/Eleven.md b/算法/learn/大厂刷题/Eleven.md
new file mode 100644
index 0000000..c6e0ab7
--- /dev/null
+++ b/算法/learn/大厂刷题/Eleven.md
@@ -0,0 +1,8 @@
+## 题目2
+一个字符串至少切几刀,切出所有的子字符串都是回文字符串.
+
+从左往右的尝试模型
+
+返回其中一种切法
+剪枝
+连续头区间,连续尾区间.
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/First.md b/算法/learn/大厂刷题/First.md
new file mode 100644
index 0000000..404a548
--- /dev/null
+++ b/算法/learn/大厂刷题/First.md
@@ -0,0 +1,80 @@
+## 题目一
+给定一个有序数组arr,代表坐落在X轴上的点
+给定一个正数K,代表绳子的长度
+返回绳子最多压中几个点?
+即使绳子边缘处盖住点也算盖住
+
+滑动窗口.
+
+## 题目二
+给定一个文件目录的路径
+写一个函数统计这个目录下所有的文件数量并返回
+隐藏文件也算,但是文件夹不算.
+
+遍历树,
+
+## 题目三
+给定以个非负整数num,
+如何不用循环语句,
+返回>=num,并且离num最近的,2的某次方
+
+```
+ public int getTwo(int start){
+ start--;
+ // 用1填满加1
+ start|=(start>>>1);
+ start|=start|(start>>>2);
+ start|=start|(start>>>4);
+ start|=start|(start>>>8);
+ start|=start|(start>>>16);
+ return (start<0)?1:start+1;
+ }
+```
+
+## 题目四
+一个数组中只有两种字符'G'和'B'
+可以让所有的G都放在左侧,所有的B都放在右侧
+或者可以让所有的G都放在右侧,所有的B都放在左侧
+但是只能在相邻字符之间进行交换操作,
+返回至少需要交换几次
+```
+ public int minTime(String abc){
+ char[] chars = abc.toCharArray();
+ int gIndex=0;
+ int gTimes=0;
+ int bIndex=0;
+ int bTimes=0;
+ for (int i=0;i=这份工作的难度,才能上班
+返回一个长度为M的数组ans,ans[j]表示j号人能获得的最好收入.
+
+有序表 TreeMap
+
+### 题目二
+贩卖机只支持硬币支付,且收退都支持10,50,100三种面额
+一次购买只能出一瓶可乐,且投钱和找零都遵循优先使用钱的原则
+需要购买可乐数量是m,
+其中手头拥有的10,50,100的数量分别为a,b,c
+可乐的价格是x(x是10的倍数)
+请计算出需要投入硬币次数
+
+### 题目三
+已知一个消息流会不断地吐出整数1~N,
+单不一定按照顺序依次吐出
+如果上次打印的序号为i,那么当i+1出现时
+请打印i+1及其之后接收过的并且连续的所有数
+直到1~N全部接收并打印完
+请设计这种接收并打印的结构
+
+等待那一个值到来
+头开头hash表
+尾开头hash表
+
+判断以某个数开头拼接,以某个数结尾拼接
+
+### 题目四
+现有司机N*2人,调度中心将所有司机平分给A,B两个区域
+第i个司机去A可得收入为income[i][0]
+第i个司机去B可得收入为income[i][1]
+返回所有调度方案中能使所有司机总收入最高的方案,是多少钱
+### 题目七
+给定一个数组arr,只能对arr中的一个子数组排序,但是想让arr整体都有序
+返回满足这个设定的子数组中,最短的是多长
+
+从左往右找最大值,不合适画错,确定右边那些不需要移动
+从右网左找最小值,不合适画错,确定左边那些不需要移动.
+
+### 题目八
+HashMap添加setAll设置所有的value,复杂度仍o1
+时间戳计数
+setAllTime=3
+all=7
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/SevenTeen.md b/算法/learn/大厂刷题/SevenTeen.md
new file mode 100644
index 0000000..30eccec
--- /dev/null
+++ b/算法/learn/大厂刷题/SevenTeen.md
@@ -0,0 +1,53 @@
+## 题目一
+1,3,5,7
+2,4,6,13
+3,9,14,14
+右上,左下.
+二分,并记录小于等于某个值的个数和最接近的数
+## 题目四 StingST
+给定两个字符串S和T
+返回S的所有子序列中
+有多少个子序列的字面值等于T
+[1,1,2,2] [1,2]
+样本对应模型 ,结尾位置是否使用
+S T
+自序列 前缀串
+dp[i][j]:s只拿前i个字符串做子序列,有多少个子序列,字面值等于T的前j个字符的前缀串
+
+## 题目五
+给定一个字符串Str
+返回Str的所有子序列中有多少不同的字面值
+https://leetcode.com/problems/distinct-subsequences-ii/
+1,2,3,1
+第0个all为{""} 1
+第1个all为{"",1}
+第2个all为当前值加上上一个all {"",1,2,12}
+第3个all为当前值加上上一个all {"",1,2,12,3,13,23,123}
+如果出现相同值当前值减去上次以相同符号开始的集合的非空总数
+{"",1,2,12,3,13,23,123, 1,11,21,121,31,131,231,1231}-{1}
+
+
+
+
+
+mynachure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/算法/learn/大厂刷题/Sixteen.md b/算法/learn/大厂刷题/Sixteen.md
new file mode 100644
index 0000000..ba9dd89
--- /dev/null
+++ b/算法/learn/大厂刷题/Sixteen.md
@@ -0,0 +1,32 @@
+## 题目一
+给定一个有正,有负,有0的数组arr,
+给定一个整数k,
+返回arr的子集是否能累加出k
+1) 正常怎么做;经典动态规划,行作为数类作为值判断是否包含某个数,由于含有负数,因此采用平移的方式-n=>0 0->n
+2) 如果arr中的数值很大,但是arr的长度不大,怎么做;分治,经典动态规划太废表
+## 题目二
+给定一个整数数组arr,
+返回arr的子集不能累加出的最小正数
+1) 正常怎么做
+2) 如果arr中肯定有1这个值,怎么做.
+
+## 题目五
+约瑟夫环问题
+给定一个链表头节点head,和一个正数m
+从头开始,每次数到m就杀死当前节点
+然后被杀节点的下一个节点从1开始重新数,
+周而复始知道只剩一个节点,返回最后的节点
+暴力O(n*m)
+
+## 题目六
+给定正数power,给定一个数组arr,给定一个数组reverse
+含义如下:
+arr长度一定是2的power次方
+reverse中的每个值一定都在0~power范围.
+例如power=2,arr={3,1,4,2},reverse={0,1,0,2}
+任何一个在前的数字可以和任何一个在后的数组,构成一对数
+可能是升序关系/相等关系或者降序关系
+比如arr开始时有如下的降序对:(3,1)(3,2)(4,2),一共3个
+接下来根据reverse对arr进行调整:
+reverse[0]=0,表示在arr中,划分每1(2的0次方)个数一组然后每个
+小组内部逆序,那么arr变为[1,3,2,4],此时有3个逆序对
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/Ten.md b/算法/learn/大厂刷题/Ten.md
new file mode 100644
index 0000000..136d063
--- /dev/null
+++ b/算法/learn/大厂刷题/Ten.md
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/Third.md b/算法/learn/大厂刷题/Third.md
new file mode 100644
index 0000000..5e07e78
--- /dev/null
+++ b/算法/learn/大厂刷题/Third.md
@@ -0,0 +1,40 @@
+### 题目九
+给定三个参数:
+二叉树的头节点head,树上某个节点target,正数k
+从target开始,可以往上走或者向下走
+返回与target的距离是k的所有节点
+
+### 题目四
+给定一个额数组arr,代表每个人的能力值.再给定一个非负数k
+如果两个人能力差值正好为k,那么可以凑在一起比赛
+一局比赛只有两个人
+返回最多可以同时有多少场比赛
+
+排序,滑动窗口
+
+### 题目五
+给定一个而正整数组arr,代表若干人的体重
+在给定以个正数limit,表示所有船共同拥有的载重量
+每艘船最多坐两人,且不能超过载重
+想让所有的人同时过河,并且最好的分配方法让船尽量少返回
+返回最好船只数
+
+从n/2开始分别网左右对比可同时过河的人.
+
+### 题目六
+
+// todo findRotateSteps
+### 题目二
+只由小写字母(a-z)组成的一批字符串
+都放在字符类型的数组String[] arr中
+如果其中某两个字符串锁含有的字符串种类完全一样
+就将两个字符串算作一类
+比如:baacbba和bac就算作一类
+返回arr中有多少类.
+
+### 题目三
+给定一个只有0和1组成的二维数组
+返回边框全是1的最大正方形面积
+
+
+子串从开始计算,以当前节点为最右节点处理. ,利用部分结果加速
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/Thirteen.md b/算法/learn/大厂刷题/Thirteen.md
new file mode 100644
index 0000000..9e7cdbd
--- /dev/null
+++ b/算法/learn/大厂刷题/Thirteen.md
@@ -0,0 +1,10 @@
+## 题目一
+面值为1-N的牌组成一组
+每次你从组里等概率的抽出1-n中的一张
+下次抽会换一组新的,有无限组
+当累加和=a且=b时,你将失败
+返回获胜的概率,给定的参数为N,a,b
+
+
diff --git a/算法/learn/大厂刷题/Twenty.md b/算法/learn/大厂刷题/Twenty.md
new file mode 100644
index 0000000..6d6619a
--- /dev/null
+++ b/算法/learn/大厂刷题/Twenty.md
@@ -0,0 +1,15 @@
+## 题目一
+如果只给定一个二叉树前序遍历数组pre和中序遍历数组in,能否不重建树,而直接生成这个二叉树的后序数组并返回
+已知二叉树中没有重复值
+先序:头,左,右
+中序:左,头,右
+后序:左,右,头
+
+## 题目四
+给定一个字符串str,当然可以生成很多子序列
+返回有多少个子序列是回文子序列,空序列不算回文.
+范围尝试模型
+[l,r]
+(l,r)
+[l,r)
+(l,r]
diff --git a/算法/learn/大厂刷题/eight.md b/算法/learn/大厂刷题/eight.md
new file mode 100644
index 0000000..d0fff45
--- /dev/null
+++ b/算法/learn/大厂刷题/eight.md
@@ -0,0 +1,6 @@
+括号嵌套使用递归.
+
+桶问题只关心是否能推高答案.
+
+
+可以走重复路,样本模型.
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/forty/Nine.md b/算法/learn/大厂刷题/forty/Nine.md
new file mode 100644
index 0000000..5aefdc7
--- /dev/null
+++ b/算法/learn/大厂刷题/forty/Nine.md
@@ -0,0 +1,10 @@
+## 527字符串简写
+第一个和最后一个不可省略.给一串字符串,尽量是字符串精简.
+## 548
+## 564
+返回一个数上方和下放最近的回文数,不能是自身.
+中间位加1或者中间位减一.偶数位可能要补充一位
+
+粗回文,从左往右对称.
+## 440
+数位dp,
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/forty/img/527.png b/算法/learn/大厂刷题/forty/img/527.png
new file mode 100644
index 0000000..fdfe560
Binary files /dev/null and b/算法/learn/大厂刷题/forty/img/527.png differ
diff --git a/算法/learn/大厂刷题/img/Twenty-1.png b/算法/learn/大厂刷题/img/Twenty-1.png
new file mode 100644
index 0000000..c8ddbfa
Binary files /dev/null and b/算法/learn/大厂刷题/img/Twenty-1.png differ
diff --git a/算法/learn/大厂刷题/img/first/动态规划转移.png b/算法/learn/大厂刷题/img/first/动态规划转移.png
new file mode 100644
index 0000000..e341dda
Binary files /dev/null and b/算法/learn/大厂刷题/img/first/动态规划转移.png differ
diff --git a/算法/learn/大厂刷题/need.md b/算法/learn/大厂刷题/need.md
new file mode 100644
index 0000000..ea1f343
--- /dev/null
+++ b/算法/learn/大厂刷题/need.md
@@ -0,0 +1 @@
+four
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/nine.md b/算法/learn/大厂刷题/nine.md
new file mode 100644
index 0000000..1d93c8e
--- /dev/null
+++ b/算法/learn/大厂刷题/nine.md
@@ -0,0 +1,15 @@
+### 题目六
+定义何为step sum?
+比如680,680+68+6=754,680的step sum 叫754
+给定一个正数num,判断他是不是某个数的step sum
+
+公式法:x+x/10+x/100=754
+
+二分查找
+### 题目一
+给定一个数组,长度为N,arr中的值
+
+下一个上一个当前
+从左到右的尝试模型,
+
+## 最长递增子序列
diff --git a/算法/learn/大厂刷题/seven.md b/算法/learn/大厂刷题/seven.md
new file mode 100644
index 0000000..1ec58f0
--- /dev/null
+++ b/算法/learn/大厂刷题/seven.md
@@ -0,0 +1,33 @@
+### 题目一
+给定一个非负数组成的数组,长度一定大于1想知道数组中哪两个数&的结果最大返回这个结果
+
+从高位开始看,&为1的结果,一个一个看看.
+
+### 题目二
+
+相机最小覆盖问题
+
+二叉树递归套路.
+ ### 题目三
+给定一个数组arr,返回如果排序之后,相邻两数的最大差值.
+假设答案法.桶排序
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/算法/learn/大厂刷题/six.md b/算法/learn/大厂刷题/six.md
new file mode 100644
index 0000000..fd448d4
--- /dev/null
+++ b/算法/learn/大厂刷题/six.md
@@ -0,0 +1,3 @@
+### 题目一
+数组中所有数都异或起来的结果,叫做异或和
+给定一个数组arr,返回arr的最大子数组异或和
diff --git a/算法/learn/大厂刷题/twenty/Tewenty-eight.md b/算法/learn/大厂刷题/twenty/Tewenty-eight.md
new file mode 100644
index 0000000..d4ec16d
--- /dev/null
+++ b/算法/learn/大厂刷题/twenty/Tewenty-eight.md
@@ -0,0 +1,4 @@
+数组做栈滑动指针
+
+
+子数组必须连续,以某个数结尾,往左可以得出答案.
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/twenty/Twenty-five.md b/算法/learn/大厂刷题/twenty/Twenty-five.md
new file mode 100644
index 0000000..c18c0c2
--- /dev/null
+++ b/算法/learn/大厂刷题/twenty/Twenty-five.md
@@ -0,0 +1,6 @@
+获取最右侧的1: num&(~num+1)
+https://leetcode.com/problems/ip-to-cidr/
+https://leetcode.com/problems/3sum/
+双指针
+
+求两个数的最大公约数
diff --git a/算法/learn/大厂刷题/twenty/Twenty-four.md b/算法/learn/大厂刷题/twenty/Twenty-four.md
new file mode 100644
index 0000000..41e5618
--- /dev/null
+++ b/算法/learn/大厂刷题/twenty/Twenty-four.md
@@ -0,0 +1,49 @@
+## 题目二
+长度为N的数组arr,一定可以组成N^2个数字对
+例如arr=[3,1,2],数字对应有(3,1),(3,2),(1,2)(3,3),(2,2)(1,1),(1,3,)(2,3),(2,1)
+也就是任意两个数都可以,而且自己和自己也算数字对
+数字对怎么排序
+第一维数据从小到大;第一维数据一样的,第二维数组也从小到大
+所以上面的数据裴谞结果为(1,1)(1,2)(1,3)(2,1)(2,2)(2,3)(3,1)(3,2)(3,3)
+给定一个数组arr,和整数k返回第k小的数值对
+
+
+取出第i小,不排序,体系30 bfrp算法.
+
+## 题目三
+正常的例程表会依次显示自然数表示里程
+吉祥的里程表会忽略含有4的数字而跳到下一个完全不含有4的数
+正常:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
+吉祥:1,2,3,5,6,7,8,9,10,11,12,13,15,16,17
+给定一个吉祥里程表的数字num(当然这个数字中不含有4)
+返回这个数字代表的真实里程
+从0开始每位有几个数.
+
+## 题目一
+给定一个整数数组arr,长度一定大于6(>=7)
+一定要选3个数组做分割点,从而分出4个部分,并且每部分都有数分割点的数字直接删除,
+不属于任何4个部分中的任何一个.
+如:{3,2,3,7,4,4,3,1,1,6,7,1,5,2,}
+可以分成{3,2,3},{4,4},{1,1,6},{1,5,2}分割点是不算的.
+
+## 题目四
+N*M的棋盘(N和M是输入参数)
+每种颜色的格子数必须相同的
+上下左右的各自算相邻
+相邻各自染的颜色必须不同
+所有各自必须染色
+返回至少多少种颜色可以完成任务.
+
+## 题目五
+给定两个字符串str1和str2
+在str1中寻找一个最短子串,能包含str2的所有字符
+字符顺序无所谓,str1这个最短子串也可以包含多余的字符
+返回这个最短包含子串
+
+滑动窗口方法
+
+## 题目六
+一个字符串删除删除重复的字符,每个字符留下一个,求删除最小字典序删除方式.
+
+选到最后不能都出现所有字符的位置.
+记下最小,
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/twenty/Twenty-one.md b/算法/learn/大厂刷题/twenty/Twenty-one.md
new file mode 100644
index 0000000..d4b7386
--- /dev/null
+++ b/算法/learn/大厂刷题/twenty/Twenty-one.md
@@ -0,0 +1,39 @@
+## 树链
+LinkCutTree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/算法/learn/大厂刷题/twenty/Twenty-seven.md b/算法/learn/大厂刷题/twenty/Twenty-seven.md
new file mode 100644
index 0000000..5f4e58e
--- /dev/null
+++ b/算法/learn/大厂刷题/twenty/Twenty-seven.md
@@ -0,0 +1,5 @@
+## 题目一
+每一个项目都有三个数,[a,b,c]表示项目a和b乐队参演,花费为c,给定很多个项目int[][] programs
+每一个乐队可能在多个项目里都出现了,但是只能挑一次nums是可以挑选的项目数量,所以一定会有nums*2只乐队被挑选出来
+返回一共挑nums轮(也就意味着一定请到所有的乐队),最小花费是多少?
+nums<9,programs长度小于500,每组测试乐队的全 部数量一定是nums*2,且标号一定是0~nums*2-1
\ No newline at end of file
diff --git a/算法/learn/大厂刷题/twenty/Twenty-six.md b/算法/learn/大厂刷题/twenty/Twenty-six.md
new file mode 100644
index 0000000..63a4255
--- /dev/null
+++ b/算法/learn/大厂刷题/twenty/Twenty-six.md
@@ -0,0 +1,3 @@
+宽度优先遍历,距离表,方便深度优先遍历(方便查看路径)剪枝
+
+并查集,合并.
diff --git a/算法/learn/大厂刷题/twenty/Twenty-three.md b/算法/learn/大厂刷题/twenty/Twenty-three.md
new file mode 100644
index 0000000..29d0ddd
--- /dev/null
+++ b/算法/learn/大厂刷题/twenty/Twenty-three.md
@@ -0,0 +1,76 @@
+## 题目二
+给定一个数组arr,长度为N>1
+从中间切一刀,保证左部分和有部分都有数字,一共有N-1种切法
+如此多的切法中,每一种都有:
+绝对值(左部分最大值-右部分最大值)
+返回最大值的绝对值是多少
+方法一
+创建两个辅助数组,一个从左往右记录最大值,一个从右往左记录最大值
+两个数组一一对应相减
+方法二
+找出最大值-min(最左,最右)
+
+子数组连续的几个,子序列可不连续的.
+
+## 题目三
+定义什么事可整合数组
+一个数组排完序之后,除了最左侧的数外,有arr[i]=arr[i-1]+1
+则称这个数组为可整合数组
+比如{5,1,2,4,3};{6,2,3,1,5,4}都是可整合数组
+返回arr中最长可整合数组的长度.
+1) 无重复
+2) max-min=n-1
+
+## 题目四
+超级水王问题,某个数组中某个数字个数超过一半.
+一次删掉两个不同的数,如果有水王则剩下的一定是水王.
+遍历剩下的数,看个数是否超过一半.
+定义两个数:候选,血量.(同时删除两个)
+
+扩展1.摩尔投票
+某个数大于N/k次打印,候选k-1
+扩展2.给定一个正数k,返回所有出现次数>N/k的数
+
+
+arr[l..r]一定要整出k份,合并的最小代价, 返回.
+
+## 题目五
+https://leetcode.cn/problems/minimum-cost-to-merge-stones/
+总是多想,立足当下.
+## 题目一
+给定数组father大小为N,表示一共有N个节点
+father[i]=j表示点i的父亲是点j,father表示的树一定是一棵树而不是森林
+queries是二维数组,大小为M*2,每一个长度为2的数组都表示一个查询[4,9],
+表示想查询4和9之间的最低公共祖先
+[3,7]表示想查询3和7之间的最低公共祖先...
+tree和queries里面的所有值,都一定在0到n-1之间
+返回一个数组ans,大小为m,ans[i]表示第i条查询的答案.
+
+
+树链抛分,21节
+
+难得东西在,年轻的时候学些
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/算法/learn/大厂刷题/twenty/Twenty-two.md b/算法/learn/大厂刷题/twenty/Twenty-two.md
new file mode 100644
index 0000000..d4b7386
--- /dev/null
+++ b/算法/learn/大厂刷题/twenty/Twenty-two.md
@@ -0,0 +1,39 @@
+## 树链
+LinkCutTree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/算法/learn/大厂刷题/twenty/img/23树链抛分.png b/算法/learn/大厂刷题/twenty/img/23树链抛分.png
new file mode 100644
index 0000000..f900767
Binary files /dev/null and b/算法/learn/大厂刷题/twenty/img/23树链抛分.png differ
diff --git a/算法/每周有营养的大厂算法面试题/邻接表表示无向图.png b/算法/每周有营养的大厂算法面试题/邻接表表示无向图.png
new file mode 100644
index 0000000..515e4eb
Binary files /dev/null and b/算法/每周有营养的大厂算法面试题/邻接表表示无向图.png differ
diff --git a/算法/算法和数据结构体系学习班/17图/img/邻接矩阵法.png b/算法/算法和数据结构体系学习班/17图/img/邻接矩阵法.png
new file mode 100644
index 0000000..43f7326
Binary files /dev/null and b/算法/算法和数据结构体系学习班/17图/img/邻接矩阵法.png differ
diff --git a/算法/算法和数据结构体系学习班/17图/img/邻接表法.png b/算法/算法和数据结构体系学习班/17图/img/邻接表法.png
new file mode 100644
index 0000000..0c617e1
Binary files /dev/null and b/算法/算法和数据结构体系学习班/17图/img/邻接表法.png differ
diff --git a/算法/算法和数据结构体系学习班/17图/图.md b/算法/算法和数据结构体系学习班/17图/图.md
new file mode 100644
index 0000000..6284672
--- /dev/null
+++ b/算法/算法和数据结构体系学习班/17图/图.md
@@ -0,0 +1,26 @@
+有向图
+
+邻接表法、邻接矩阵法描述图
+
+
+
+
+
+图(Graph)包含点(Node)和边(Edge)。
+
+### 宽度优先遍历
+
+按照分支一个一个走,栈弹出一个打印一次,Set登记表记录哪些走过。
+
+### 深度优先遍历
+
+深度优先遍历,入栈打印
+
+拓扑序,点数大的小。
+
+
+
+
+
+
+
diff --git a/算法/算法和数据结构体系学习班/18、认识一些经典的递归过程/一些经典的递归过程.md b/算法/算法和数据结构体系学习班/18、认识一些经典的递归过程/一些经典的递归过程.md
new file mode 100644
index 0000000..e69de29
diff --git a/算法/算法和数据结构体系学习班/2.认识复杂度、对数器、二分法.md b/算法/算法和数据结构体系学习班/2.认识复杂度、对数器、二分法.md
new file mode 100644
index 0000000..fee7a6b
--- /dev/null
+++ b/算法/算法和数据结构体系学习班/2.认识复杂度、对数器、二分法.md
@@ -0,0 +1,44 @@
+# 认识复杂度、对数器、二分法或异运算
+1. 时间复杂度
+2. 额外空间复杂度
+3. 常数项,一个操作的执行时间不以具体样本量为转移(数组寻址),每次执行时间都是固定的时间。
+### 时间复杂度
+#### 选择排序
+1. n*(看+比)+1
+2. (n-1)* n*(看+比)+1
+3. (n-2)* n*(看+比)+1
+4. 2*(n+n-1+n-2+····+1)+n 看+比 2
+5. 2an平方+bn+n+c
+6. 2an平方
+最高阶,选出最小的,从头开始放。
+#### 冒泡排序
+1. 相邻的两个比较,大的放后面,最大值在后面。
+2. n-1
+3. n-2
+4. n-3
+5. 1
+5. n平方
+#### 插入排序
+1. 最好n
+2. 最差n平方
+#### 计算时间复杂度
+1. 按照最坏的情况来
+2. 拆分为一个个基本动作
+3. 如果数据量为n,看基本动作和n之间的关系。
+4. 只把高阶项留下,低阶项和常数项去除。
+### 常数项
+### 最优解
+1. 时间复杂度
+2. 空间复杂度
+#### 常数时间操作
+1. 常见算数操作
+2. 移位、位运算
+3. 复制、比较、自增、自减操作
+4. 数组寻址操作
+#### 非常数时间操作
+1、链表LinkedList
+### 对数器
+### 局部最小值
+数据状况和问题本身梳理问题。
+二分排他性
+俩边开始找,根据趋势,二分处理。
\ No newline at end of file
diff --git a/算法/算法和数据结构体系学习班/3.异或运算相关面试题.md b/算法/算法和数据结构体系学习班/3.异或运算相关面试题.md
new file mode 100644
index 0000000..34b1f28
--- /dev/null
+++ b/算法/算法和数据结构体系学习班/3.异或运算相关面试题.md
@@ -0,0 +1,3 @@
+## 异或运算
+无进位相加,满足结合律和交换率
+
\ No newline at end of file
diff --git a/算法/算法和数据结构体系学习班/4.一些基础的数据结构.md b/算法/算法和数据结构体系学习班/4.一些基础的数据结构.md
new file mode 100644
index 0000000..0d8e400
--- /dev/null
+++ b/算法/算法和数据结构体系学习班/4.一些基础的数据结构.md
@@ -0,0 +1,54 @@
+1. 单链表、双向链表
+2. 栈队列
+## 数组做队列
+1. 数组固定长度,两个指针追赶。只用一个元素时不好实现。
+2. 添加变量队列元素个数。begin和end解耦。
+## 栈随时获取最小值
+1. 数据栈
+2. 最小栈(弹出后依然能获取最小值)
+3. 压栈,数据栈正常压入,最小栈如果压入数小于栈顶则亚如当前数,如果大于则重复压入栈顶。
+4. 弹出同步弹出。
+
+## 图优先遍历
+深度优先遍历:栈
+宽度优先遍历:队列
+## 栈实现队列
+1. 设置push栈和pop栈,两个来回倒,push压入,弹出时push中的数据放入pop中,从pop中弹出。(一次性倒完,)
+## 队列实现栈
+1. 压栈放入一个队列中,需要弹栈的时候将全部放入另一个队列中,留下最后一个弹出。
+2. 再次放入,再放在当前队列中存入,弹出的时候,再次导入另一个队列中,最后一个弹出。
+## 递归
+### 递归改非递归
+使用系统栈。树遍历。
+递归到动态规划。
+大化小,递归图。
+## Master公式分析递归时间复杂度
+子问题规模一致
+## 哈希表 HashMap
+## 有序表 TreeMap
+## 归并排序
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/算法/算法和数据结构体系学习班/5.归并排序及相关面试题.md b/算法/算法和数据结构体系学习班/5.归并排序及相关面试题.md
new file mode 100644
index 0000000..c190ee4
--- /dev/null
+++ b/算法/算法和数据结构体系学习班/5.归并排序及相关面试题.md
@@ -0,0 +1,6 @@
+## 递归排序
+1. 归并分两边排序
+2. 合并,左右比较放入一个新的数据做那个
+## 归并
+1. 步长从1开始增加到数组长度。
+2. merge sort 把需要比较的数据变成有序的信息。
\ No newline at end of file
diff --git a/算法/算法和数据结构体系学习班/6.归并排序附加题、随机快速排序.md b/算法/算法和数据结构体系学习班/6.归并排序附加题、随机快速排序.md
new file mode 100644
index 0000000..e69de29
diff --git a/算法/算法和数据结构体系学习班/img/常数时间.png b/算法/算法和数据结构体系学习班/img/常数时间.png
new file mode 100644
index 0000000..1d9c694
Binary files /dev/null and b/算法/算法和数据结构体系学习班/img/常数时间.png differ
diff --git a/算法/算法和数据结构体系学习班/img/归并merge.png b/算法/算法和数据结构体系学习班/img/归并merge.png
new file mode 100644
index 0000000..8be85ef
Binary files /dev/null and b/算法/算法和数据结构体系学习班/img/归并merge.png differ
diff --git a/算法/算法和数据结构体系学习班/img/手写/2.认识复杂度.jpg b/算法/算法和数据结构体系学习班/img/手写/2.认识复杂度.jpg
new file mode 100644
index 0000000..ad06d8d
Binary files /dev/null and b/算法/算法和数据结构体系学习班/img/手写/2.认识复杂度.jpg differ
diff --git a/算法/算法和数据结构体系学习班/img/算法复杂度.png b/算法/算法和数据结构体系学习班/img/算法复杂度.png
new file mode 100644
index 0000000..a6f7980
Binary files /dev/null and b/算法/算法和数据结构体系学习班/img/算法复杂度.png differ
diff --git a/算法/算法思路记录.md b/算法/算法思路记录.md
new file mode 100644
index 0000000..236ac19
--- /dev/null
+++ b/算法/算法思路记录.md
@@ -0,0 +1,37 @@
+## 问
+
+1. 机器人上高楼,遇到比自己高的,减去差距,遇到比自己低的,加上差距(可能加到溢出),问,机器人多高能刚好通过大楼?
+2. [2551. 将珠子放入背包中 - 力扣(LeetCode)](https://leetcode.cn/problems/put-marbles-in-bags/)
+3. [2127. 参加会议的最多员工数 - 力扣(LeetCode)](https://leetcode.cn/problems/maximum-employees-to-be-invited-to-a-meeting/)
+4. [1489. 找到最小生成树里的关键边和伪关键边 - 力扣(LeetCode)](https://leetcode.cn/problems/find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree/)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+内向基环数
+
+## 答
+
+1. 二分法,从最低0开始到最高楼二分测试,测试值在0-max之间。
+2. 无论怎么分都有第一个和最后一个的和,从头到尾,数字两两求和(在那里分,价值就是这个的和),去最大的几个减去最小的几个。
+3. 拓扑排序根据入(为0)将不是环上的数据删除。
+
diff --git a/算法/算法突击/2023,3,4/7.图.md b/算法/算法突击/2023,3,4/7.图.md
new file mode 100644
index 0000000..474aa95
--- /dev/null
+++ b/算法/算法突击/2023,3,4/7.图.md
@@ -0,0 +1,17 @@
+# 图
+
+有向图,无向图。
+
+# 临界表
+
+二维数组表示图
+
+# 拓扑图
+
+有向无环图
+
+1. 列出二维表
+2. 找出每个点的入度
+3. 取出入度为0的节点,作为当前位置,多个并列排序
+4. 将取出节点到达节点的入度减1.
+5. 循环3,4.
\ No newline at end of file
diff --git a/算法/资料地址.txt b/算法/资料地址.txt
new file mode 100644
index 0000000..c49bf8d
--- /dev/null
+++ b/算法/资料地址.txt
@@ -0,0 +1 @@
+https://cloud.fynote.com/share/s/7615
\ No newline at end of file