<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sxtopc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sxtopc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sxtopc]]></copyright><item><title><![CDATA[Mybatis中支持缓存的query与不支持缓存的query]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/140099500</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/140099500</guid><author>sxtopc</author><pubDate>Mon, 01 Jul 2024 16:15:14 +0800</pubDate><description><![CDATA[其实，mapper文件中useCache参数会用来构建MappedStatement对象。即ms.isUseCache()被用来判断是否走缓存逻辑。3.通过业务逻辑判断。]]></description><category></category></item><item><title><![CDATA[携程笔试2021.09.09]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/120209297</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/120209297</guid><author>sxtopc</author><pubDate>Thu, 09 Sep 2021 21:09:38 +0800</pubDate><description><![CDATA[三道编程

1.

输入：

7

cd a

cd b

pwd

cd ..

pwd

cd ..


]]></description><category></category></item><item><title><![CDATA[leetcode-140. 单词拆分 II  (字典树/dp + 回溯法) + 字节测开字典树算法题]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/117165464</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/117165464</guid><author>sxtopc</author><pubDate>Sat, 22 May 2021 22:08:33 +0800</pubDate><description><![CDATA[给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict，在字符串中增加空格来构建一个句子，使得句子中所有的单词都在词典中。返回所有这些可能的句子。

说明：

分隔时可以重复使用字典中的单词。
你可以假设字典中没有重复的单词。
示例 1：

输入:
s = "catsanddog"
wordDict = ["cat", "cats", "and", "sand", "dog"]
输出:
[
"cats and dog",
"cat sand dog"
]
示例 2：

输入:
s =...]]></description><category></category></item><item><title><![CDATA[剑指 Offer 59 - II. 队列的最大值]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/114670419</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/114670419</guid><author>sxtopc</author><pubDate>Thu, 11 Mar 2021 16:34:35 +0800</pubDate><description><![CDATA[请定义一个队列并实现函数 max_value 得到队列里的最大值，要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。

若队列为空，pop_front 和 max_value需要返回 -1

示例 1：

输入:
["MaxQueue","push_back","push_back","max_value","pop_front","max_value"]
[[],[1],[2],[],[],[]]
输出:[null,null,null,2,1,2]...]]></description><category></category></item><item><title><![CDATA[解决ubuntu环境下OpenNRE项目搭建中遇到的torch和transformers的问题]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/109499949</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/109499949</guid><author>sxtopc</author><pubDate>Wed, 04 Nov 2020 22:09:18 +0800</pubDate><description><![CDATA[github项目OpenNRE通过git clone指令克隆到本地之后，需要对项目所需的包进行配置。

项目中包含一个requirements.txt文件，通过指令pip install -r requirements.txt可以批量安装。

要知道ubuntu自带的有python的解释器，但是对于pip指令而言，针对的是python2.x进行安装，这样第一行就会直接报错，因为torch==1.6.0版本会提示找不到合适资源。

后来下载去到pytorch官网，查找Linux系统下可使用pip安装的torc]]></description><category></category></item><item><title><![CDATA[windows下GitHub中.sh文件下载的问题解决方案]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/109459034</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/109459034</guid><author>sxtopc</author><pubDate>Mon, 02 Nov 2020 22:31:50 +0800</pubDate><description><![CDATA[一些github中的项目为了加快开发者的下载速度，一般不会将项目的数据集与项目绑定到一起，一般都是以.sh后缀的文件格式与项目绑定。

比如实体关系抽取项目中的数据集下载问题：



对于.sh格式的文件安装需要sh命令，而sh指令是git系统下的操作指令。

Git是分布式版本控制系统，那么它就没有中央服务器的，每个人的电脑就是一个完整的版本库，这样，工作的时候就不需要联网了，因为版本都是在自己的电脑上。

A.首先安装git系统，并配置一下用户环境变量。之后到benchmark文件下运行sh downl]]></description><category></category></item><item><title><![CDATA[leetcode-最大子序和（dp or 线段树）]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/109167871</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/109167871</guid><author>sxtopc</author><pubDate>Mon, 19 Oct 2020 20:21:58 +0800</pubDate><description><![CDATA[最大子序和

难度简单2541

给定一个整数数组nums，找到一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。

示例:


输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释:连续子数组[4,-1,2,1] 的和最大，为6。


进阶:

如果你已经实现复杂度为 O(n) 的解法，尝试使用更为精妙的分治法求解。



解题思路:

动态规划的思想，这是一道最简单的求连续子序列和的问题，只需要在记忆化数组的基础上添加一个变量时刻更新最大的和即可，因为只...]]></description><category></category></item><item><title><![CDATA[剑指offer--二叉树的下一结点（中序遍历思想，枚举各种情况）]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108902141</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108902141</guid><author>sxtopc</author><pubDate>Fri, 02 Oct 2020 15:22:50 +0800</pubDate><description><![CDATA[题目描述

给定一个二叉树和其中的一个结点，请找出中序遍历顺序的下一个结点并且返回。注意，树中的结点不仅包含左右子结点，同时包含指向父结点的指针。

解题思路：

一种最朴素的方法：由于TreeLinkNode中包含有next指针，指向当前结点的父节点，这样可以找到整棵二叉树的根节点。题目要求中序遍历的下一个节点，可以预处理获取整棵树的中序遍历序列，保存在一个容器中，之后for循环遍历容器中的节点，当访问到当前节点与给定节点相同时，直接return容器中的下一个节点即可。这种方法没有写。

以上是机试的思路]]></description><category></category></item><item><title><![CDATA[剑指offer--序列化与反序列化二叉树(先序递归，建树)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108890653</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108890653</guid><author>sxtopc</author><pubDate>Wed, 30 Sep 2020 22:25:51 +0800</pubDate><description><![CDATA[题目描述

请实现两个函数，分别用来序列化和反序列化二叉树



二叉树的序列化是指：把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串，从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改，序列化的结果是一个字符串，序列化时通过 某种符号表示空节点（#），以 ！ 表示一个结点值的结束（value!）。
二叉树的反序列化是指：根据某种遍历顺序得到的序列化字符串结果str，重构二叉树。


例如，我们可以把一个只有根节点为1的二叉树序列化为"1,..]]></description><category></category></item><item><title><![CDATA[剑指offer--数据流中的中位数(大小根堆优先队列)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108881857</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108881857</guid><author>sxtopc</author><pubDate>Wed, 30 Sep 2020 11:30:27 +0800</pubDate><description><![CDATA[题目描述

如何得到一个数据流中的中位数？如果从数据流中读出奇数个数值，那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值，那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流，使用GetMedian()方法获取当前读取数据的中位数。



解题思路：

最朴素的想法是，通过设定一个ArrayList链表，在插入函数中，每次通过add函数添加num到当前状态下的链表中。

在GetMedian函数中，由于数据是随着数据流不断更新的，所以需要先使用.]]></description><category></category></item><item><title><![CDATA[剑指offer--剪绳子（记忆化递归 || dp || 数学）]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108870173</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108870173</guid><author>sxtopc</author><pubDate>Tue, 29 Sep 2020 16:36:43 +0800</pubDate><description><![CDATA[题目描述

给你一根长度为n的绳子，请把绳子剪成整数长的m段（m、n都是整数，n&gt;1并且m&gt;1，m&lt;=n），每段绳子的长度记为k[1],...,k[m]。请问k[1]x...xk[m]可能的最大乘积是多少？例如，当绳子的长度是8时，我们把它剪成长度分别为2、3、3的三段，此时得到的最大乘积是18。

输入描述:


输入一个数n，意义见题面。（2 &lt;= n &lt;= 60）

输出描述:


输出答案。

示例1

输入


8

输出


18

解题思路：

给出几种方法，看到]]></description><category></category></item><item><title><![CDATA[剑指offer--链表中环的入口结点]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108863765</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108863765</guid><author>sxtopc</author><pubDate>Tue, 29 Sep 2020 11:21:27 +0800</pubDate><description><![CDATA[题目描述

给一个链表，若其中包含环，请找出该链表的环的入口结点，否则，输出null。



解题思路：

两种方法，HashSet结构和双指针做法。

HashSet方法：直接遍历链表，每次指向当前节点的下一个节点。如果当前节点不在set集合中，执行进集合操作。如果当前节点在set集合中，那么直接返回当前节点即为所求的环的入口节点。控制边界，如果链表为空，直接返回为null。代码如下：


/*
 public class ListNode {
    int val;
    ListNode nex.]]></description><category></category></item><item><title><![CDATA[剑指offer--树的子结构(节点遍历)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108815552</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108815552</guid><author>sxtopc</author><pubDate>Sat, 26 Sep 2020 19:53:31 +0800</pubDate><description><![CDATA[题目描述

输入两棵二叉树A，B，判断B是不是A的子结构。（ps：我们约定空树不是任意一个树的子结构）

解题思路：

递归解决问题的过程：

1.递归解决什么问题，判断是否B树是A树的子结构。相同，返回true；不同返回false。

2.递归的终止条件，如果当前递归中，树B为空，返回true，与树A无关；如果树B不为空，但是树A为空，那么直接返回false，回溯证明当前递归的过程并不是我们所需要的。

3.下一次递归的参数：如果A的根节点和B的根节点不相等，直接返回false。证明当前路径不匹配，直接回]]></description><category></category></item><item><title><![CDATA[剑指offer--平衡二叉树(二叉树深度+递归)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108796551</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108796551</guid><author>sxtopc</author><pubDate>Fri, 25 Sep 2020 15:05:04 +0800</pubDate><description><![CDATA[题目描述

输入一棵二叉树，判断该二叉树是否是平衡二叉树。

在这里，我们只需要考虑其平衡性，不需要考虑其是不是排序二叉树



解题思路：

根据求解二叉树深度的问题。可以将该问题从两种解题方法考虑，分别是自顶向下和自底向上。

首先，自顶向下的方法中，通过引入一个HashMap的结构，记录节点与节点深度。不过java中的hashmap使用get函数之前需要使用containsKey函数判断是否包含当前节点。

先通过dfs函数，递归求解二叉树中全部节点及其对应的深度，并使用hashmap数据结构保存下.]]></description><category></category></item><item><title><![CDATA[剑指offer--不用加减乘除做加法(位运算)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108776248</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108776248</guid><author>sxtopc</author><pubDate>Thu, 24 Sep 2020 16:35:43 +0800</pubDate><description><![CDATA[题目描述

写一个函数，求两个整数之和，要求在函数体内不得使用+、-、*、/四则运算符号。

解题思路：

不可以使用加减运算符，那么就要想到使用位运算解决加法操作。

分为两个步骤，一个是无进位相加结果，另一个是进位相加的二进制结果，类似于整数相加结果的余数，但是应该向左位移一位，因为进位只对前面的位数有影响。对于负数而言，引入了反码和补码的概念，减去一个数，相当于加上一个数的负数，因为计算机中只提供了加法的运算，代码如下：


public class Solution {
    public int]]></description><category></category></item><item><title><![CDATA[剑指offer--旋转数组的最小数字(二分)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108763461</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108763461</guid><author>sxtopc</author><pubDate>Wed, 23 Sep 2020 22:43:10 +0800</pubDate><description><![CDATA[题目描述

把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转，输出旋转数组的最小元素。
例如数组[3,4,5,1,2]为[1,2,3,4,5]的一个旋转，该数组的最小值为1。
NOTE：给出的所有元素都大于0，若数组大小为0，请返回0。



解题思路：这道题由于设定了旋转数组，直接遍历就没什么意思了。

使用的二分查找的方法，但是array[mid]的比较数值target设定为多少是需要考究的，一般不给出target值的二分直接将边界值设定为targ.]]></description><category></category></item><item><title><![CDATA[剑指offer--二叉搜索树与二叉链表(线索化二叉树思想，链表)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108753761</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108753761</guid><author>sxtopc</author><pubDate>Wed, 23 Sep 2020 16:02:27 +0800</pubDate><description><![CDATA[题目描述

输入一棵二叉搜索树，将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点，只能调整树中结点指针的指向。



解题思想：

最朴素的解题思想是：对于二叉搜索树而言，中序遍历的结果就是一个递增的序列。为了将搜索树转换成一个排序的双向链表，又不可以创建新的节点，可以使用ArrayList列表加入到搜索树的中序遍历中去，当访问到当前节点时，将节点添加到ArrayList链表中，最后一层for循环统一对链表中节点间的左右指针进行更新。使用的是其他方法，这段代码直接粘上了，仅供参考：


p.]]></description><category></category></item><item><title><![CDATA[剑指offer--二进制中1的个数(位运算)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108746054</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108746054</guid><author>sxtopc</author><pubDate>Wed, 23 Sep 2020 09:57:32 +0800</pubDate><description><![CDATA[题目描述

输入一个整数，输出该数32位二进制表示中1的个数。其中负数用补码表示。



解题思路：四种方法。第一种对于负数是不可行的，其他三种可行。

第一种方法是模拟二进制的移位，每次循环将整数对2取余，如果不为0，代表最后一位为1，则ans++，否则最后一位为0，直接将整数除以2，类似于二进制移位操作。但是这种方法有一个弊端，就是对于int类型所能取到的最小负数，即-Integer.MAX_VALUE,没办法正确处理。

解释如下，因为int型的最小负数，换成二进制是10000....(31个0)，.]]></description><category></category></item><item><title><![CDATA[leetcode--最大整数子集(dp+数论+动态数组)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108715407</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108715407</guid><author>sxtopc</author><pubDate>Mon, 21 Sep 2020 19:11:36 +0800</pubDate><description><![CDATA[给出一个由无重复的正整数组成的集合，找出其中最大的整除子集，子集中任意一对 (Si，Sj) 都要满足：Si % Sj = 0 或 Sj % Si = 0。

如果有多个目标子集，返回其中任何一个均可。



示例 1:

输入: [1,2,3]
输出: [1,2] (当然, [1,3] 也正确)
示例 2:

输入: [1,2,4,8]
输出: [1,2,4,8]

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/largest-divisible-.]]></description><category></category></item><item><title><![CDATA[leetcode--不同路径(动态规划)]]></title><link>https://blog.youkuaiyun.com/sxtopc/article/details/108696918</link><guid>https://blog.youkuaiyun.com/sxtopc/article/details/108696918</guid><author>sxtopc</author><pubDate>Sun, 20 Sep 2020 19:25:37 +0800</pubDate><description><![CDATA[一个机器人位于一个 m x n 网格的左上角 （起始点在下图中标记为“Start” ）。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角（在下图中标记为“Finish”）。

问总共有多少条不同的路径？

例如，上图是一个7 x 3 的网格。有多少可能的路径？



示例1:

输入: m = 3, n = 2
输出: 3
解释:
从左上角开始，总共有 3 条路径可以到达右下角。
1. 向右 -&gt; 向右 -&gt; 向下
2. 向右 -&gt; 向下 -&gt; 向右
3. 向下 .]]></description><category></category></item></channel></rss>