<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenlang2015的博客]]></title><description><![CDATA[https://chenglang2015.cn]]></description><link>https://blog.youkuaiyun.com/qq_34844201</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_34844201]]></copyright><item><title><![CDATA[java设计模式-单例模式]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/117444949</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/117444949</guid><author>qq_34844201</author><pubDate>Tue, 01 Jun 2021 16:04:43 +0800</pubDate><description><![CDATA[单例模式

懒汉模式

public class Singleton_01 {
    //懒汉模式(线程不安全)
     public  static Singleton_01 instance;
     private Singleton_01() {
     }
     
       public   static  Singleton_01  getInstance(){
          if(instance!=null){
                return  insta]]></description><category></category></item><item><title><![CDATA[Leetcode-判断平衡二叉树]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/116699257</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/116699257</guid><author>qq_34844201</author><pubDate>Wed, 12 May 2021 10:54:46 +0800</pubDate><description><![CDATA[Leetcode-判断平衡二叉树
1.题目描述
给定一个二叉树，判断它是否是高度平衡的二叉树。

本题中，一棵高度平衡二叉树定义为：

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。


示例 1：


输入：root = [3,9,20,null,null,15,7]
输出：true
示例 2：


输入：root = [1,2,2,3,3,null,null,4,4]
输出：false
示例 3：

输入：root = []
输出：true


2.解题思路
根据上面平衡二叉树的判断条]]></description><category></category></item><item><title><![CDATA[java  面试系列-线程池]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/116517113</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/116517113</guid><author>qq_34844201</author><pubDate>Sat, 08 May 2021 08:55:59 +0800</pubDate><description><![CDATA[java  面试-线程池的理解
java 线程池的理解？
1.使用线程池的好处？

降低系统资源消耗，通过重用已经存在的线程，降低线程和销毁造成的的消耗。
提高系统响应速度，当有任务到达时，通过复用已经存在的线程，无需等待新线程的创建。
方便线程并发数的管控。因为线程若是无限制的创建，可能会导致内存占用过多而产生OOM，并且会造成cpu过度切换（cpu切换线程是有时间成本的（需要保持当前执行线程的现场，并恢复要执行线程的现场）。
提供更强大的功能，延时定时线程池。

2.线程池的主要参数
public Th]]></description><category></category></item><item><title><![CDATA[Leetcode- 打家劫舍]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/115335265</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/115335265</guid><author>qq_34844201</author><pubDate>Tue, 30 Mar 2021 21:58:05 +0800</pubDate><description><![CDATA[1.问题描述


你是一个专业的小偷，计划偷窃沿街的房屋。每间房内都藏有一定的现金，影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统，如果两间相邻的房屋在同一晚上被小偷闯入，系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组，计算你 不触动警报装置的情况下 ，一夜之内能够偷窃到的最高金额。



示例 1：

输入：[1,2,3,1]
输出：4
解释：偷窃 1 号房屋 (金额 = 1) ，然后偷窃 3 号房屋 (金额 = 3)。
    偷窃到的最高金额 = 1 + 3 = 4 ..]]></description><category></category></item><item><title><![CDATA[Leetcode-滑动窗口之字符串的排列]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/114270645</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/114270645</guid><author>qq_34844201</author><pubDate>Mon, 01 Mar 2021 20:27:20 +0800</pubDate><description><![CDATA[1.题目描述



给定两个字符串s1和s2，写一个函数来判断 s2 是否包含 s1的排列。

换句话说，第一个字符串的排列之一是第二个字符串的子串。



示例 1：

输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba").
示例 2：

输入: s1= "ab" s2 = "eidboaoo"
输出: False



2.解题思路

滑动窗口 + 字典

分析一： 题目要求 s1的排列之一是 s2的一个子串。而子...]]></description><category></category></item><item><title><![CDATA[leetcode-买卖股票的最佳时机 II]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/113818750</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/113818750</guid><author>qq_34844201</author><pubDate>Mon, 15 Feb 2021 20:02:26 +0800</pubDate><description><![CDATA[1.题目描述


给定一个数组，它的第i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易（多次买卖一支股票）。

注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。



示例 1:

输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天（股票价格 = 1）的时候买入，在第 3 天（股票价格 = 5）的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
    随后，在第 4 天（股票价格 = 3）...]]></description><category></category></item><item><title><![CDATA[Leetcode-123. 买卖股票的最佳时机 III]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/113818532</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/113818532</guid><author>qq_34844201</author><pubDate>Mon, 15 Feb 2021 19:43:13 +0800</pubDate><description><![CDATA[1.题目描述


给定一个数组，它的第 i 个元素是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。

注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。



示例1:

输入：prices = [3,3,5,0,0,3,1,4]
输出：6
解释：在第 4 天（股票价格 = 0）的时候买入，在第 6 天（股票价格 = 3）的时候卖出，这笔交易所能获得利润 = 3-0 = 3 。
    随后，在第 7 天（股票价格 = 1）...]]></description><category></category></item><item><title><![CDATA[leetcode-1248. 统计「优美子数组」]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/113761062</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/113761062</guid><author>qq_34844201</author><pubDate>Mon, 08 Feb 2021 19:34:23 +0800</pubDate><description><![CDATA[1. 题目描述


给你一个整数数组nums 和一个整数 k。

如果某个 连续 子数组中恰好有 k 个奇数数字，我们就认为这个子数组是「优美子数组」。

请返回这个数组中「优美子数组」的数目。



示例 1：

输入：nums = [1,1,2,1,1], k = 3
输出：2
解释：包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。
示例 2：

输入：nums = [2,4,6], k = 1
输出：0
解释：数列中不包含任何奇数，所以不存在优美子数组。
示例 3：...]]></description><category></category></item><item><title><![CDATA[Leetcode-和为K的子数组]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/113747626</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/113747626</guid><author>qq_34844201</author><pubDate>Sun, 07 Feb 2021 22:01:11 +0800</pubDate><description><![CDATA[1.题目描述


给你一个整数数组arr。请你返回和为 奇数的子数组数目。

由于答案可能会很大，请你将结果对10^9 + 7取余后返回。



示例 1：

输入：arr = [1,3,5]
输出：4
解释：所有的子数组为 [[1],[1,3],[1,3,5],[3],[3,5],[5]] 。
所有子数组的和为 [1,4,9,3,8,5].
奇数和包括 [1,9,3,5] ，所以答案为 4 。
示例 2 ：

输入：arr = [2,4,6]
输出：0
解释：所有子数组为 [[2],[2,4]...]]></description><category></category></item><item><title><![CDATA[Leetcode-完全平方数]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/113664163</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/113664163</guid><author>qq_34844201</author><pubDate>Thu, 04 Feb 2021 20:55:14 +0800</pubDate><description><![CDATA[1.题目描述


给定正整数n，找到若干个完全平方数（比如1, 4, 9, 16, ...）使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

给你一个整数 n ，返回和为 n 的完全平方数的 最少数量 。

完全平方数 是一个整数，其值等于另一个整数的平方；换句话说，其值等于一个整数自乘的积。例如，1、4、9 和 16 都是完全平方数，而 3 和 11 不是。


示例1：

输入：n = 12
输出：3 
解释：12 = 4 + 4 + 4
示例 2：

输入：n = 13
输出：2...]]></description><category></category></item><item><title><![CDATA[Leetcode-组合总和IV]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/113572658</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/113572658</guid><author>qq_34844201</author><pubDate>Tue, 02 Feb 2021 20:22:58 +0800</pubDate><description><![CDATA[1.题目描述


给定一个由正整数组成且不存在重复数字的数组，找出和为给定目标正整数的组合的个数。

示例:

nums = [1, 2, 3]
target = 4

所有可能的组合为：
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)

请注意，顺序不同的序列被视作不同的组合。

因此输出为 7。


2.题意解析

读完题目，这个题目的本质就是一个完全背包问题。但是这个题目的深层意思就是求排列不是 组合，所以在遍历背包的顺序]]></description><category></category></item><item><title><![CDATA[Leetcode-目标和]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/113529785</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/113529785</guid><author>qq_34844201</author><pubDate>Mon, 01 Feb 2021 22:20:32 +0800</pubDate><description><![CDATA[目录



1.题目描述

2.解题思路

3.源代码实现

1.题目描述


给定一个非负整数数组，a1, a2, ..., an, 和一个目标数，S。现在你有两个符号+和-。对于数组中的任意一个整数，你都可以从+或-中选择一个符号添加在前面。

返回可以使最终数组和为目标数 S 的所有添加符号的方法数。



示例：

输入：nums: [1, 1, 1, 1, 1], S: 3
输出：5
解释：

-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3...]]></description><category></category></item><item><title><![CDATA[Leetcode-单词拆分]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/113446503</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/113446503</guid><author>qq_34844201</author><pubDate>Sat, 30 Jan 2021 21:27:00 +0800</pubDate><description><![CDATA[1.题目描述


给定一个非空字符串 s 和一个包含非空单词的列表 wordDict，判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。

说明：

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

输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。
示例 2：

输入: s = "applepenapple", .]]></description><category></category></item><item><title><![CDATA[Leetcode-分割等和子集]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/113446006</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/113446006</guid><author>qq_34844201</author><pubDate>Sat, 30 Jan 2021 20:57:08 +0800</pubDate><description><![CDATA[1.题目描述

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集，使得两个子集的元素和相等。


注意:

每个数组中的元素不会超过 100
数组的大小不会超过 200
示例 1:

输入: [1, 5, 11, 5]

输出: true

解释: 数组可以分割成 [1, 5, 5] 和 [11].


示例2:

输入: [1, 2, 3, 5]

输出: false

解释: 数组不能分割成两个元素和相等的子集.



2.解题思路

首先可以将本题转换为01 背包问题。为什么可以转..]]></description><category></category></item><item><title><![CDATA[Leetcode- 岛屿数量]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/112745142</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/112745142</guid><author>qq_34844201</author><pubDate>Sun, 17 Jan 2021 15:33:19 +0800</pubDate><description><![CDATA[1.题目描述

给你一个由'1'（陆地）和 '0'（水）组成的的二维网格，请你计算网格中岛屿的数量。岛屿总是被水包围，并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外，你可以假设该网格的四条边均被水包围。


示例 1：

输入：grid = [
  ["1","1","1","1","0"],
  ["1","1","0","1","0"],
  ["1","1","0","0","0"],
  ["0","0","0","0","0"]
]
输出：1
示例 2：

输入：grid.]]></description><category></category></item><item><title><![CDATA[Leetcode-最长公共子序列]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/112536220</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/112536220</guid><author>qq_34844201</author><pubDate>Tue, 12 Jan 2021 19:13:33 +0800</pubDate><description><![CDATA[目录



1.题目描述

2解题思路

2.1 题意解析

2.2 动态规划思路

2.3 总结

3.源代码

1.题目描述

给定两个字符串text1 和text2，返回这两个字符串的最长公共子序列的长度。

一个字符串的子序列是指这样一个新的字符串：它是由原字符串在不改变字符的相对顺序的情况下删除某些字符（也可以不删除任何字符）后组成的新字符串。
例如，"ace" 是 "abcde" 的子序列，但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同...]]></description><category></category></item><item><title><![CDATA[Leetcode-最长回文子序列]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/112510571</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/112510571</guid><author>qq_34844201</author><pubDate>Tue, 12 Jan 2021 14:46:03 +0800</pubDate><description><![CDATA[1.题目描述

给定一个字符串s，找到其中最长的回文子序列，并返回该序列的长度。可以假设s的最大长度为1000。


示例 1:
输入:

"bbbab"
输出:

4
一个可能的最长回文子序列为 "bbbb"。

示例 2:
输入:

"cbbd"
输出:

2
一个可能的最长回文子序列为 "bb"。



2.解题思路

本题属于使用动态规划方法解决的一道题，回文序列的意思应该不用去解释了。做动态规划的题目，首先要去定义dp数组的含义。这里我们定义一个二维数组dp

dp[i][j]表示字符...]]></description><category></category></item><item><title><![CDATA[Leetcode- 分割回文串 II]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/112439045</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/112439045</guid><author>qq_34844201</author><pubDate>Sun, 10 Jan 2021 20:05:15 +0800</pubDate><description><![CDATA[目录

1.题目描述

2. 解题思路

2.1 动态规划

3.源代码

1.题目描述

给定一个字符串s，将s分割成一些子串，使每个子串都是回文串。

返回符合要求的最少分割次数。

示例：


输入: "aab"
输出: 1
解释: 进行一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。

2. 解题思路

2.1 动态规划

没做过 5.最长回文串 和 131. 分割回文串 可以先去做下因为要切割出多个回文串，那么意味着就我们需要判断哪个子串是回文串，
如果我们不做预处理，那...]]></description><category></category></item><item><title><![CDATA[Leetcode-分割回文串]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/112405714</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/112405714</guid><author>qq_34844201</author><pubDate>Sat, 09 Jan 2021 21:31:15 +0800</pubDate><description><![CDATA[目录

1.题目描述

2.解题思路

3. 源代码

3.1 回溯法

3.2 回溯的优化（记忆化搜索）

4. 总结

1.题目描述

给定一个字符串s，将s分割成一些子串，使每个子串都是回文串。

返回s所有可能的分割方案。

示例1：


输入: "aab"
输出: 1
解释: 进行一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。

2.解题思路

本题这涉及到两个关键问题：

切割问题，有不同的切割方式
1.判断回文
2.相信这里不同的切割方式可以搞懵很多同学了。...]]></description><category></category></item><item><title><![CDATA[Leetcode-最长回文子串]]></title><link>https://blog.youkuaiyun.com/qq_34844201/article/details/112390054</link><guid>https://blog.youkuaiyun.com/qq_34844201/article/details/112390054</guid><author>qq_34844201</author><pubDate>Sat, 09 Jan 2021 16:57:23 +0800</pubDate><description><![CDATA[1.题目描述

给你一个字符串s，找到s中最长的回文子串。

示例一：


输入：s = "babad"
输出："bab"
解释："aba" 同样是符合题意的答案。

示例二：


输入：s = "cbbd"
输出："bb"

示例三：


输入：s = "a"
输出："a"

2.解题思路

根据题目的意思我们可以知道简单的循环暴力解法加上判断字符串是否是回文字符串时间可能会超出限制。所以我们在判断回文字符串的时候采用双指针的思想，运用中心扩展法来解决问题。

因为回文串是中心对称的，我们可以先枚举...]]></description><category></category></item></channel></rss>