<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[StrawberryMuMu的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/StrawberryMuMu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; StrawberryMuMu]]></copyright><item><title><![CDATA[最长回文子串的长度与子串（区间DP）]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/116426359</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/116426359</guid><author>StrawberryMuMu</author><pubDate>Wed, 05 May 2021 16:12:37 +0800</pubDate><description><![CDATA[区间DP

1、确定状态

求s串0~j的最长回文子串

假设a~b是一个回文串，那么s的a+1~b-1仍然是最长回文子串

子问题：

求s[i...j]的最长回文子串

如果s[i]==s[j]，需要知道s[i+1...j-1]的最长回文子串

否则就是s[i+1...j]，s[i...j-1]的最长回文子串

2、转移方程

f[i][j] = f[i+1][j-1] 【s[i] == s[j]】

f[i][j] = false 【s[i] != s[j]】

i + 1 == j即i，j相邻那么如]]></description><category></category></item><item><title><![CDATA[SpringBoot整合Swagger，访问Swagger-ui.html导致404问题]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/113800279</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/113800279</guid><author>StrawberryMuMu</author><pubDate>Sat, 13 Feb 2021 12:31:43 +0800</pubDate><description><![CDATA[错误复盘：

1、导入jar包


&lt;dependency&gt;
     &lt;groupId&gt;io.springfox&lt;/groupId&gt;
     &lt;artifactId&gt;springfox-swagger2&lt;/artifactId&gt;
     &lt;version&gt;3.0.0&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
     &lt;groupId&gt;io.sprin]]></description><category></category></item><item><title><![CDATA[Mysql 通过binlog日志恢复数据]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/109530657</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/109530657</guid><author>StrawberryMuMu</author><pubDate>Fri, 06 Nov 2020 14:15:35 +0800</pubDate><description><![CDATA[Binlog日志，即binary log，是二进制日志文件，有两个作用，一个是增量备份，另一个是主从复制，即主节点维护一个binlog日志文件，从节点从binlog中同步数据，也可以通过binlog日志来恢复数据

1，登录mysql查看binlog日志的状态，输入show variables like ‘%log_bin%’;查看binlog为off关闭状态

2，开启mysql binlog日志，进入mysql配置文件(vi /etc/my.cnf) 在mysqld区域内添加如下内容，①server-.]]></description><category></category></item><item><title><![CDATA[list转数组问题：list.toArray()与list.toArrays(T[])]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/109485323</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/109485323</guid><author>StrawberryMuMu</author><pubDate>Wed, 04 Nov 2020 10:31:03 +0800</pubDate><description><![CDATA[list.toArray()最终是转化为Object[]数组,以正确的顺序（从第一个到最后一个元素）返回一个包含此列表中所有元素的数组。

注意list的属性内容不能是基本类型，必须是包装类型或者类类型。

list.toArray(T[])最终是转化为T[]泛型数组，比如list存储的是字符串，那么安装第一种方式就可以使用：

Object[] strsObj = list.toArray(); 然后遍历strsObj依次强转为String；

有了泛型函数则方便很多，String[] strs = li]]></description><category></category></item><item><title><![CDATA[leetcode 第203场周赛第三第四题]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108520284</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108520284</guid><author>StrawberryMuMu</author><pubDate>Thu, 10 Sep 2020 19:18:29 +0800</pubDate><description><![CDATA[1562. 查找大小为 M 的最新分组



考点：双链表/集合/数组

1、双链表解法

算法思想：每次当某个位置 i 设置为1后就会出现以下情况

①i的左边有1右边无1

②i的右边有1左边无1

③i的左右两边都有1

设定m个1的数组的个数为ans，步骤数为cnt

第一种情况先检测i的左边1的个数如果是m则ans-1，则i的的左指针设置为最左边1的下标，再次检测当前更新后1的个数如果是m则ans+1；第二种情况i的的右指针设置为最右边1的下标，则i的的右指针设置为最右边1的下标，再次检测当前更新]]></description><category></category></item><item><title><![CDATA[leetcode 第205场周赛]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108488640</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108488640</guid><author>StrawberryMuMu</author><pubDate>Wed, 09 Sep 2020 14:20:23 +0800</pubDate><description><![CDATA[1576. 替换所有的问号

难度：打卡

考点：遍历

时间复杂度：O(n)


class Solution {
    //将字符串存入字符数组，注意首尾多开一个设置为0
    //然后每次遇到‘？’我们就将其变为与前后都不同的字符即可
    public String modifyString(String s) {
        char[] cha = new char[26];
        for(int i = 0; i &lt; 26; ++i){
            cha]]></description><category></category></item><item><title><![CDATA[Leetcode 第34场 双周赛20.9.5 5491/5492/5493/5494]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108435924</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108435924</guid><author>StrawberryMuMu</author><pubDate>Mon, 07 Sep 2020 10:50:10 +0800</pubDate><description><![CDATA[5491. 矩阵对角线元素的和



难度：打卡题

考点：初学程序人

思想：两边对角线累加然后删除相交的值（奇数行删，偶数行不删）


class Solution {
    public int diagonalSum(int[][] mat) {
        int n = mat.length;
        int res = 0;
        for(int i = 0; i &lt; n; ++i){
            res += mat[i][i];
         ]]></description><category></category></item><item><title><![CDATA[AcWing 1010. 拦截导弹（dp与贪心）]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108360782</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108360782</guid><author>StrawberryMuMu</author><pubDate>Wed, 02 Sep 2020 13:53:19 +0800</pubDate><description><![CDATA[dp与贪心解LIS问题
1、dp + dp

O(n^2)
第一问显然每套导弹拦截系统拦截导弹高度为不升子序列，求最长的就好了
第二问求导弹拦截系统的个数可以转化为求最长上升子序列长度
证明见： Tian-Xing’s blog orz orz

1、首先我们把这些导弹分为s组（s即为所求答案）
可以看出每一组都是一个不升子序列
2、划分完后我们在组一里找一个原序列里以组一的开头点连续的不升子串的最后一个元素，可以知道在组2中一定有一个大与它的点
（如果组二中没有的话，那么组二中最高的导弹高度必然小于这..]]></description><category></category></item><item><title><![CDATA[AcWing 1016. 最大上升子序列和（动态规划线性dp）]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108359868</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108359868</guid><author>StrawberryMuMu</author><pubDate>Wed, 02 Sep 2020 12:31:27 +0800</pubDate><description><![CDATA[算法思想：

朴素的做法（n^2）

类似于合唱队形的朴素做法

可以先预处理从左到右的最大子序列的和f[i]

然后遍历f找到最大值。

朴素做法可以解决最长与最大的上升子序列的问题，但是贪心加二分只能解决最长上升子序列的问题。


import java.util.*;

class Main{
    static int n = 0, N = 1010, last = 0;
    static int[] nums = new int[N], f = new int[N];
    
    ..]]></description><category></category></item><item><title><![CDATA[AcWing 1012. 友好城市(最长上升子序列)]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108299726</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108299726</guid><author>StrawberryMuMu</author><pubDate>Sat, 29 Aug 2020 21:28:07 +0800</pubDate><description><![CDATA[时间复杂度：

O(n^2);换成单调栈O(nlogn)

算法思想：

对一边排序，另一边求最长上升子序列


//一岸从小到大排序，另一岸求最长上升子序列
import java.util.*;

class Main{
    
    static int n = 0, N = 5010;
    static int[][] nums = new int[N][2];
    static int[] max = new int[N];
    public static void main(..]]></description><category></category></item><item><title><![CDATA[AcWing 482. 合唱队形(最长上升子序列 单调栈)]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108298365</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108298365</guid><author>StrawberryMuMu</author><pubDate>Sat, 29 Aug 2020 19:23:32 +0800</pubDate><description><![CDATA[算法思想

用登山代码过

时间复杂度：

O(nlogn)




import java.util.*;

class Main{
    static int n = 0, N = 110;
    static int[] nums = new int[N];
    static int[] left = new int[N], right = new int[N];
    static int bs(int[] max, int len, int num){//找到从左到右第一个大于nu...]]></description><category></category></item><item><title><![CDATA[AcWing 1014. 登山JAVA(最长单调子序列 单调栈)]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108298232</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108298232</guid><author>StrawberryMuMu</author><pubDate>Sat, 29 Aug 2020 19:05:56 +0800</pubDate><description><![CDATA[时间复杂度：

O(nlogn)


//单调栈问题
//分别计算从左向右和从右向左的最长上升子序列,分别存储到两个数组中
import java.util.*;
 
class Main{
    static int n = 0, N = 1010;
    static int[] nums = new int[N];
    static int[] left = new int[N], right = new int[N];
    static int bs(int[] max, int l..]]></description><category></category></item><item><title><![CDATA[AcWing 1017. 怪盗基德的滑翔翼（最长上升子序列，单调栈）]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108297456</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108297456</guid><author>StrawberryMuMu</author><pubDate>Sat, 29 Aug 2020 17:46:35 +0800</pubDate><description><![CDATA[算法思想

单调队列问题
分别计算从左向右和从右向左的最长上升子序列，取最大值即可


//单调队列问题
//分别计算从左向右和从右向左的最长上升子序列，取最大值即可
import java.io.*;
import java.util.*;

class Main{
    static int n = 0, N = 110;
    static int[] nums = new int[N];
    
    static int bs(int[] max, int len, int num...]]></description><category></category></item><item><title><![CDATA[AcWing 275. 传纸条(数字三角形线性DP)]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108294412</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108294412</guid><author>StrawberryMuMu</author><pubDate>Sat, 29 Aug 2020 14:39:36 +0800</pubDate><description><![CDATA[证明可以使用方格取数的代码：

证明

首先， 从右下角回传可以等价为从左上角同时传两次。要想两个路径除了起点和终点之外没有交点，那么肯定有一条路径完全位于另一条的上方。
现在考虑路径有交点的情况：

这种情况其实转换起来很简单，只要把位于红色线段上方的蓝色线段交换颜色就可以了，也就是说当红色处于蓝色的下方的时候，将红色的路径换成从蓝色的那段走是等效的（因为两条路径加起来经过的节点完全没有变）。

就可以得到：

但是这个时候虽然满足了红色路径完全在蓝色的上方，但是却有交点。但是因为所有节点的...]]></description><category></category></item><item><title><![CDATA[AcWing 1027. 方格取数(数字三角形线性DP)]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108293411</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108293411</guid><author>StrawberryMuMu</author><pubDate>Sat, 29 Aug 2020 13:14:02 +0800</pubDate><description><![CDATA[算法思想：

四维未优化版







import java.util.*;
class Main{
    static int n = 0, N = 15;
    static int[][] nums = new int[N][N];
    static int[][][] max = new int[N + N][N][N];
    public static void main(String[] args)throws Exception{
        Scanner sc ...]]></description><category></category></item><item><title><![CDATA[AcWing 1018. 最低通行费(数字三角形线性DP)]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108274452</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108274452</guid><author>StrawberryMuMu</author><pubDate>Fri, 28 Aug 2020 10:18:18 +0800</pubDate><description><![CDATA[样例中，最小值为109=1+2+5+7+9+12+19+21+33。



import java.lang.*;
import java.util.*;
class Main{
    static int n = 0, N = 110;
    static int[][] nums = new int[N][N];
    static int[][] min = new int[N][N];
    static int getMin(){
        for(int i = 1; i &l..]]></description><category></category></item><item><title><![CDATA[AcWing 1015. 摘花生JAVA（数字三角形模型DP）]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108273209</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108273209</guid><author>StrawberryMuMu</author><pubDate>Fri, 28 Aug 2020 09:31:56 +0800</pubDate><description><![CDATA[类似：leetcode62. 不同路径；63. 不同路径 II







import java.io.*;
import java.lang.*;

class Main{
    static int n = 0, R = 0, C = 0, N = 110;
    static int[][] nums = new int[N][N];
    static int[][] max = new int[N][N];
    static int getMax(){
        
      ]]></description><category></category></item><item><title><![CDATA[ACWing算法思考：图论算法（模板）选用！]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108245996</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108245996</guid><author>StrawberryMuMu</author><pubDate>Thu, 27 Aug 2020 15:17:47 +0800</pubDate><description><![CDATA[最短路问题


稠密图：Dijkstra算法

稀疏图或者负权：Spfa算法

有步数限制：Bella-Ford算法


]]></description><category></category></item><item><title><![CDATA[AcWing算法思考：整数（浮点数）二分查找模板分析！]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108225236</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108225236</guid><author>StrawberryMuMu</author><pubDate>Tue, 25 Aug 2020 17:34:35 +0800</pubDate><description><![CDATA[红色的是不一样的地方，其他情况是一样的


数组存在指定值时：


得到从左到右第一个满足指定值的下标。


数组不存在指定值时：


得到从左到右第一个大于指定值的下标。

不存在大于指定值的时候（即都比指定值小），得到数组结尾下标。

不存在小于指定值的时候（即都比指定值大），得到数组开始下标。


代码模板：



 static int BinerySearch(int[] nums, int l, int r, int k){
        if(l &gt; r)return;
       ]]></description><category></category></item><item><title><![CDATA[AcWing 4. 多重背包问题（DP）]]></title><link>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108204361</link><guid>https://blog.youkuaiyun.com/StrawberryMuMu/article/details/108204361</guid><author>StrawberryMuMu</author><pubDate>Mon, 24 Aug 2020 17:56:15 +0800</pubDate><description><![CDATA[有NN种物品和一个容量是VV的背包。

第ii种物品最多有sisi件，每件体积是vivi，价值是wiwi。

求解将哪些物品装入背包，可使物品体积总和不超过背包容量，且价值总和最大。
输出最大价值。

输入格式

第一行两个整数，N，VN，V，用空格隔开，分别表示物品种数和背包容积。

接下来有NN行，每行三个整数vi,wi,sivi,wi,si，用空格隔开，分别表示第ii种物品的体积、价值和数量。

输出格式

输出一个整数，表示最大价值。

数据范围

0&lt;N,V≤1...]]></description><category></category></item></channel></rss>