<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[GoSantiago的博客]]></title><description><![CDATA[本文为自己学习过程中记的笔记，仅做备忘查看使用。]]></description><link>https://blog.youkuaiyun.com/GoSantiago</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GoSantiago]]></copyright><item><title><![CDATA[豆瓣日历 摘抄]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/128578485</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/128578485</guid><author>GoSantiago</author><pubDate>Fri, 06 Jan 2023 14:34:33 +0800</pubDate><description><![CDATA[我在最好的时候碰到你，是我的运气，可惜我没有时间了。想想，说人生无悔，都是赌气的话，人生若无悔，那该多无趣啊。-《一代宗师》]]></description><category></category></item><item><title><![CDATA[leetcode-子序列 子串]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/120877565</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/120877565</guid><author>GoSantiago</author><pubDate>Wed, 20 Oct 2021 23:40:47 +0800</pubDate><description><![CDATA[1. 求两个数组的最长公共子序列
刻画最长公共子序列问题的最优子结构
设X=x1x2…xm和Y=y1y2…yn是两个序列，Z=z1z2…zk是这两个序列的一个最长公共子序列。


 如果xm=yn，那么zk=xm=yn，且Zk-1是Xm-1，Yn-1的一个最长公共子序列；



 如果xm≠yn，那么zk≠xm，意味着Z是Xm-1，Y的一个最长公共子序列；



 如果xm≠yn，那么zk≠yn，意味着Z是X，Yn-1的一个最长公共子序列。



从上面三种情况可以看出，两个序列的LCS包含两个序列的前缀的]]></description><category></category></item><item><title><![CDATA[LeetCode-搜索]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/120877472</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/120877472</guid><author>GoSantiago</author><pubDate>Wed, 20 Oct 2021 23:32:50 +0800</pubDate><description><![CDATA[DFS
1. 岛屿的最大面积
岛屿的最大面积
package dfs;

import java.util.Arrays;

public class Solution_island {
    public static int maxAreaOfIsland(int[][] grid) {
        if(null == grid || grid.length == 0 || (grid.length == 1 &amp;&amp; grid[0].length == 0))
          ]]></description><category></category></item><item><title><![CDATA[LeetCode-回溯]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/120877448</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/120877448</guid><author>GoSantiago</author><pubDate>Wed, 20 Oct 2021 23:30:12 +0800</pubDate><description><![CDATA[矩阵中的路径

package huisu;

public class Solution_01 {
    public static boolean hasPath(char[] matrix, int rows, int cols, char[] str)
    {
        if(rows == 0 || cols == 0) return false;
        char[][] matrix2 = new char[rows][cols];
        int index = ]]></description><category></category></item><item><title><![CDATA[剑指Offer中遇到的问题]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/118685861</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/118685861</guid><author>GoSantiago</author><pubDate>Mon, 12 Jul 2021 22:55:23 +0800</pubDate><description><![CDATA[总结
第26、27、28、32-3、33、34、36题，不会做。好好看看
39 40 42 45都不是很难，而且有一定的技巧。46题一时没有想起来好的解决办法。49也需要一定的技巧
59-1好好做做
03 数组中重复的数字
class Solution {
    //遍历数组，使得下标i位置上的值num[i]==i
    public static int findRepeatNumber(int[] nums) {
        for(int i = 0; i &lt; nums.length; ]]></description><category></category></item><item><title><![CDATA[子串&子数组问题]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/118685816</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/118685816</guid><author>GoSantiago</author><pubDate>Mon, 12 Jul 2021 22:51:51 +0800</pubDate><description><![CDATA[1. 累加和等于num的最长子数组的长度（有负数）

注：数组元素可为负数
思路：求子数组问题，就是依次考虑数组中每一位元素之前的数组的情况。
比如说arr = {7,3,2,1,1,7,7}，依次考虑数组范围（0-i）中，任意元素开始，以arr[i]结尾的子数组是否符合条件。比如说i=0时，子数组{7}符合条件；i=4时，子数组{3,2,1,1}符合条件。
假设遍历到i位置，数组元素从0加到i的值为sum，只需要求i之前的数组中，是否出现过和为sum-num的情况。例如，arr = {9,8,3,2,1,]]></description><category></category></item><item><title><![CDATA[编程常见问题]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/118685749</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/118685749</guid><author>GoSantiago</author><pubDate>Mon, 12 Jul 2021 22:47:09 +0800</pubDate><description><![CDATA[1. 二维数组


初始化
int[][] grid = {
    {1,2,3},
    {2,0,4},
    {3,1,1}
};



判断二维数组是否为空
二维数组为空，要检查三个部分:


一是数组首地址是否为空


二是是否为{}，也就是array.length==0的情况


三是是否为{{}}，这时array.length=1，但是array[0].length==0。


所以判断语句为if(array==null||array.length==0||(array.length==]]></description><category></category></item><item><title><![CDATA[项目中的流程]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/105565120</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/105565120</guid><author>GoSantiago</author><pubDate>Thu, 16 Apr 2020 19:30:39 +0800</pubDate><description><![CDATA[1. SpringMVC执行流程
浅探SpringMVC中HandlerExecutionChain之handler、interceptor

2. IOC启动流程
参考

spring的启动是建筑在servlet容器之上的，所有web工程的初始位置就是web.xml，它配置了servlet的上下文（context）和监听器（Listener）。 web.xml中定义了 上下文监听器 Contex...]]></description><category></category></item><item><title><![CDATA[十进制转36进制]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/105342837</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/105342837</guid><author>GoSantiago</author><pubDate>Mon, 06 Apr 2020 13:48:41 +0800</pubDate><description><![CDATA[package test;

import java.util.HashMap;
import java.util.Stack;

/**
 * 36进制与10进制转换思路：
 *      一、创建HashMap类型对象用于存放数字'0'到字母'Z'36个字符值键对
 *      二、
 * @author Administrator
 *
 */
public class Ten2Sixty...]]></description><category></category></item><item><title><![CDATA[设计模式之工厂模式（factory pattern）]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/105079387</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/105079387</guid><author>GoSantiago</author><pubDate>Tue, 24 Mar 2020 19:41:46 +0800</pubDate><description><![CDATA[工厂顾名思义就是创建产品，根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式，根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建，是一种创建型模式。本文从一个具体的例子逐步深入分析，来体会三种工厂模式的应用场景和利弊。
1. 简单工厂模式
该模式对对象创建管理方式最为简单，因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工...]]></description><category></category></item><item><title><![CDATA[累加和等于num的最长子数组的长度]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/105057408</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/105057408</guid><author>GoSantiago</author><pubDate>Mon, 23 Mar 2020 20:55:50 +0800</pubDate><description><![CDATA[1. 累加和等于num的最长子数组的长度（有负数）

注：数组元素可为负数
思路：求子数组问题，就是依次考虑数组中每一位元素之前的数组的情况
比如说arr = {7,3,2,1,1,7,7}，依次考虑数组范围（0-i）中，任意元素开始，以arr[i]结尾的子数组是否符合条件。比如说i=0时，子数组{7}符合条件；i=4时，子数组{3,2,1,1}符合条件。
假设遍历到i位置，数组元素从0加到i的值...]]></description><category></category></item><item><title><![CDATA[字符串中的表达式计算]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/105057358</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/105057358</guid><author>GoSantiago</author><pubDate>Mon, 23 Mar 2020 20:52:45 +0800</pubDate><description><![CDATA[字符串中的表达式计算

思路：


如果字符串中没有括号：
每遇到一个字符，把它放进栈里（如果是数字字符，需要结合字符串将其转换成数字）。当一个数字进栈之前发现栈顶元素为*或/，则连续弹出两次栈顶，计算该表达式的结果，并把结果放入栈中。
这样做保证栈中的元素只有数字、+、-，当字符串遍历完，计算栈中的表达式就行。


如果字符串中有括号：
设计一个函数int[] value(String str,...]]></description><category></category></item><item><title><![CDATA[设计缓存结构]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/105057317</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/105057317</guid><author>GoSantiago</author><pubDate>Mon, 23 Mar 2020 20:51:23 +0800</pubDate><description><![CDATA[1. 设计缓存结构LRU

注：哈希表中，key或value如果存的是简单类型（基本数据类型和String），则哈希表中存的是简单类型的值。如果要往哈希表中添加对象，存的是该对象的地址。
思路：
先设计一个节点Node&lt;key, value&gt;，（key，value的类型可以使用泛型）根据这个节点设计一个双向链表（由头到尾，优先级由低到高），里面存的是Node节点设计双向链表的几个方法：...]]></description><category></category></item><item><title><![CDATA[求最大子矩阵的大小（单调栈）]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/105057156</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/105057156</guid><author>GoSantiago</author><pubDate>Mon, 23 Mar 2020 20:45:15 +0800</pubDate><description><![CDATA[单调栈
1. 单调栈的结构

背景：给定一个数组，求数组中每一个元素的左边距离其最近的比它小的值，和右边距离其最近的比它小的值。
数组：arr:{3,5,4,2,6}




arr[i]
left
right




3
null
2


5
3
4


4
3
2


2
null
null


6
2
null



思路：设计一个栈，依次存入的元素大于等于栈顶元素，保持栈中元素从下往上逐渐...]]></description><category></category></item><item><title><![CDATA[窗口]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/105057079</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/105057079</guid><author>GoSantiago</author><pubDate>Mon, 23 Mar 2020 20:41:59 +0800</pubDate><description><![CDATA[1. 生成窗口最大值数组

题目：有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边，窗口每次向右边滑一个位置。
例如，数组为【4,3,5,4,3,3,6,7】，窗口大小为3时：
窗口数组 　　最大值
[4  3  5] 4  3  3  6  7       max:  5
4 [3  5  4] 3  3  6  7        max:  5
4  3 [5  4  3] 3...]]></description><category></category></item><item><title><![CDATA[Morris遍历]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/104902934</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/104902934</guid><author>GoSantiago</author><pubDate>Mon, 16 Mar 2020 16:59:02 +0800</pubDate><description><![CDATA[Morris遍历
Morris遍历是二叉树遍历的另一种方式，做到了空间复杂度为O(1)，时间复杂度为O(N)。
1. Morris遍历的流程
当遍历指针cur遍历到某个节点：

该节点有左孩子，则判断该节点左子树的最右孩子mostRight的right指针

如果最右孩子的right指针为空，说明第一次遍历到该节点，即mostRight.right=null，则令最右孩子的right指针指向自己，...]]></description><category></category></item><item><title><![CDATA[有关窗口的算法题]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/104832868</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/104832868</guid><author>GoSantiago</author><pubDate>Fri, 13 Mar 2020 02:21:31 +0800</pubDate><description><![CDATA[1. 生成窗口最大值数组

题目：有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边，窗口每次向右边滑一个位置。
例如，数组为【4,3,5,4,3,3,6,7】，窗口大小为3时：
窗口数组 　　最大值
[4  3  5] 4  3  3  6  7       max:  5
4 [3  5  4] 3  3  6  7        max:  5
4  3 [5  4  3] 3...]]></description><category></category></item><item><title><![CDATA[Manacher]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/104817344</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/104817344</guid><author>GoSantiago</author><pubDate>Thu, 12 Mar 2020 13:42:34 +0800</pubDate><description><![CDATA[Manacher

题目：求一个字符串中最长的回文串的长度。

如果将字符串化成数组，每遍历一个元素，都要以其为中心判断回文串的长度，时间复杂度比较大。于是就有了Manacher算法，它和KMP算法一样，都是在暴力解的基础上进行改进。
数据处理
对于一个长度为奇数回文字符串，按照暴力法能够得出正确结果。
但是对于长度为偶数的回文字符串，按暴力解法是不能得出正确结果的。
因为长度为偶数的回文字符串的...]]></description><category></category></item><item><title><![CDATA[BFPRT]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/104810392</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/104810392</guid><author>GoSantiago</author><pubDate>Thu, 12 Mar 2020 02:08:28 +0800</pubDate><description><![CDATA[BFPRT

题目：在一个无序数组中找到一个第K小的数

一：背景介绍
原文链接： https://segmentfault.com/a/1190000008322873
在一堆数中求其前 k 大或前 k 小的问题，简称 TOP-K 问题。而目前解决 TOP-K 问题最有效的算法即是 BFPRT 算法，又称为中位数的中位数算法，该算法由 Blum、Floyd、Pratt、Rivest、Tarjan...]]></description><category></category></item><item><title><![CDATA[KMP]]></title><link>https://blog.youkuaiyun.com/GoSantiago/article/details/104760413</link><guid>https://blog.youkuaiyun.com/GoSantiago/article/details/104760413</guid><author>GoSantiago</author><pubDate>Mon, 09 Mar 2020 20:28:46 +0800</pubDate><description><![CDATA[KMP算法
1. KMP算法原理
1.1 next[]
给定一个数组arr，求它的next[]数组

含义：next[i]表示数组arr第i个元素之前的字符串中，最长的公共前缀后缀的长度。

注：next[0] = -1 next[1] = 0

例子
char[] arr = new char[]{'a', 'b', 'a', 'b', 'c', 'a', 'b', 'a', 'b', 'a',...]]></description><category></category></item></channel></rss>