<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Cheng_MY的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/Cheng_MY</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Cheng_MY]]></copyright><item><title><![CDATA[分割整数构成字母字符串（动态规划）]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/104534980</link><guid>https://blog.csdn.net/Cheng_MY/article/details/104534980</guid><author>Cheng_MY</author><pubDate>Thu, 27 Feb 2020 13:53:34 +0800</pubDate><description><![CDATA[分割整数构成字母字符串（动态规划）
题目：
一条包含字母 A-Z 的消息通过以下方式进行了编码：
'A' -&gt; 1
'B' -&gt; 2
...
'Z' -&gt; 26

给定一个只包含数字的非空字符串，请计算解码方法的总数。
示例 1:

输入: "12"
输出: 2
解释: 它可以解码为 "AB"（1 2）或者 "L"（12）。

示例 2:

输入: "226"
输出: 3
解释:...]]></description><category></category></item><item><title><![CDATA[Java实现二叉树的递归、非递归，前序遍历、中序遍历、后序遍历；以及层次遍历]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/104359003</link><guid>https://blog.csdn.net/Cheng_MY/article/details/104359003</guid><author>Cheng_MY</author><pubDate>Mon, 17 Feb 2020 15:24:06 +0800</pubDate><description><![CDATA[Java实现二叉树的递归、非递归，前序遍历、中序遍历、后序遍历；以及层次遍历

递归前序遍历

ArrayList&lt;Integer&gt; list = new ArrayList();
public ArrayList&lt;Integer&gt; preOrder(TreeNode root) {
	if (root != null) {
            list.add(roo...]]></description><category></category></item><item><title><![CDATA[Java实现八大排序算法，以及这些排序算法时间复杂度、空间复杂度、稳定性等比较]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/104358995</link><guid>https://blog.csdn.net/Cheng_MY/article/details/104358995</guid><author>Cheng_MY</author><pubDate>Mon, 17 Feb 2020 15:23:25 +0800</pubDate><description><![CDATA[Java实现八大排序算法，以及这些排序算法时间复杂度、空间复杂度、稳定性等比较

冒泡排序

	public void sort(int[] arr) {
        for (int i = 0; i &lt; arr.length; i++) {
            int temp = 0;
            for (int j = 0; j &lt; arr.length ...]]></description><category></category></item><item><title><![CDATA[Java中拷贝数组的三种方式]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/104053005</link><guid>https://blog.csdn.net/Cheng_MY/article/details/104053005</guid><author>Cheng_MY</author><pubDate>Mon, 20 Jan 2020 16:20:30 +0800</pubDate><description><![CDATA[Java中拷贝数组的三种方式
一.Arrays.copyOf(datatype[] srcArray, int length)
其中，srcArray 表示要进行复制的数组，length 表示复制后的新数组的长度。

使用这种方法复制数组时，默认从原数组的第一个元素（索引值为 0）开始复制，目标数组的长度将为 length。如果 length 大于 srcArray.length，则目标数组中采用...]]></description><category></category></item><item><title><![CDATA[分布式系统入门概念理解]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103479352</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103479352</guid><author>Cheng_MY</author><pubDate>Tue, 10 Dec 2019 17:18:42 +0800</pubDate><description><![CDATA[分布式系统概念理解
参考链接：用大白话聊聊分布式系统https://waylau.com/talk-about-distributed-system/

]]></description><category></category></item><item><title><![CDATA[动态规划----编辑距离]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103323778</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103323778</guid><author>Cheng_MY</author><pubDate>Sat, 30 Nov 2019 14:13:44 +0800</pubDate><description><![CDATA[给定两个单词 word1 和 word2，计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作：
插入一个字符
删除一个字符
替换一个字符

思路：利用动态规划的思想，新建一个dp[m + 1][n + 1]数组，dp[i][j]表示word1中前 i 个字符和word2中前j个字符的最少操作数，那么dp[i][j]依赖于dp[i - 1][j - 1...]]></description><category></category></item><item><title><![CDATA[所有股票问题----例题总结]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103272490</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103272490</guid><author>Cheng_MY</author><pubDate>Wed, 27 Nov 2019 19:22:46 +0800</pubDate><description><![CDATA[1.最佳买卖股票时机–含冷冻期–相当于无穷此交易次数
给定一个整数数组，其中第 i 个元素代表了第 i 天的股票价格 。​
设计一个算法计算出最大利润。在满足以下约束条件下，你可以尽可能地完成更多的交易（多次买卖一支股票）:
你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
卖出股票后，你无法在第二天买入股票 (即冷冻期为 1 天)。
示例:

输入: [1,2,3,0,2]
输出:...]]></description><category></category></item><item><title><![CDATA[所有股票问题的思路----本质]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103272571</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103272571</guid><author>Cheng_MY</author><pubDate>Wed, 27 Nov 2019 11:44:59 +0800</pubDate><description><![CDATA[一、穷举框架
比如说这个问题，每天都有三种「选择」：买入、卖出、无操作，我们用 buy, sell, rest 表示这三种选择。但问题是，并不是每天都可以任意选择这三种选择的，因为 sell 必须在 buy 之后，buy 必须在 sell 之后。那么 rest 操作还应该分两种状态，一种是 buy 之后的 rest（持有了股票），一种是 sell 之后的 rest（没有持有股票）。而且别忘了，我们...]]></description><category></category></item><item><title><![CDATA[背包问题----单词拆分]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103264246</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103264246</guid><author>Cheng_MY</author><pubDate>Tue, 26 Nov 2019 20:12:40 +0800</pubDate><description><![CDATA[给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict，判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。
示例：
示例 1：

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

输入: s = "app...]]></description><category></category></item><item><title><![CDATA[0-1背包问题-----目标和]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103226215</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103226215</guid><author>Cheng_MY</author><pubDate>Sun, 24 Nov 2019 17:03:48 +0800</pubDate><description><![CDATA[给定一个非负整数数组，a1, a2, …, an, 和一个目标数，S。现在你有两个符号 + 和 -。对于数组中的任意一个整数，你都可以从 + 或 -中选择一个符号添加在前面。
返回可以使最终数组和为目标数 S 的所有添加符号的方法数。
示例 1:

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

-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+...]]></description><category></category></item><item><title><![CDATA[0-1背包问题，以及空间优化]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103225484</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103225484</guid><author>Cheng_MY</author><pubDate>Sun, 24 Nov 2019 16:22:01 +0800</pubDate><description><![CDATA[什么是0-1背包问题？
有一个容量为 N 的背包，要用这个背包装下物品的价值最大，这些物品有两个属性：体积 w 和价值 v。
定义一个二维数组 dp 存储最大价值，其中 dp[ i ][ j ] 表示前 i 件物品体积不超过 j 的情况下能达到的最大价值。设第 i 件物品体积为 w，价值为 v，根据第 i 件物品是否添加到背包中，可以分两种情况讨论：

第 i 件物品没添加到背包，总体积不超过 j...]]></description><category></category></item><item><title><![CDATA[分割等和子集]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103221778</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103221778</guid><author>Cheng_MY</author><pubDate>Sun, 24 Nov 2019 10:05:20 +0800</pubDate><description><![CDATA[给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集，使得两个子集的元素和相等。
示例 1:
输入: [1, 5, 11, 5]
输出: true

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

示例 2:
输入: [1, 2, 3, 5]
输出: false

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

思路：
1.首先求数组总和sum，如果sum为奇数，那么肯定...]]></description><category></category></item><item><title><![CDATA[最长摆动序列---如果连续数字之间的差严格地在正数和负数之间交替，则数字序列称为摆动序列。第一个差（如果存在的话）可能是正数或负数。少于两个元素的序列也是摆动序列。  例如， [1,7,4,9,2,5]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103219127</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103219127</guid><author>Cheng_MY</author><pubDate>Sat, 23 Nov 2019 21:41:37 +0800</pubDate><description><![CDATA[如果连续数字之间的差严格地在正数和负数之间交替，则数字序列称为摆动序列。第一个差（如果存在的话）可能是正数或负数。少于两个元素的序列也是摆动序列。
示例 1:

输入: [1,7,4,9,2,5]
输出: 6 
解释: 整个序列均为摆动序列。
示例 2:

输入: [1,17,5,10,13,15,10,5,16,8]
输出: 7
解释: 这个序列包含几个长度为 7 摆动序列，其中一个可为[1,1...]]></description><category></category></item><item><title><![CDATA[搞懂什么叫进程/线程、同步/异步、阻塞/非阻塞、并发/并行]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103122045</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103122045</guid><author>Cheng_MY</author><pubDate>Mon, 18 Nov 2019 15:15:37 +0800</pubDate><description><![CDATA[原文链接：https://www.cnblogs.com/mhq-martin/p/9035640.html
一.基本概念
1.进程与线程
进程（Process）：
是Windows系统中的一个基本概念，它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程，进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元，在进程中可以有多个线程同时执行代码。进程之间...]]></description><category></category></item><item><title><![CDATA[给定一个正整数 n，将其拆分为至少两个正整数的和，并使这些整数的乘积最大化。 返回你可以获得的最大乘积。]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103119401</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103119401</guid><author>Cheng_MY</author><pubDate>Mon, 18 Nov 2019 11:25:45 +0800</pubDate><description><![CDATA[给定一个正整数 n，将其拆分为至少两个正整数的和，并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
示例 1:

输入: 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。
示例 2:

输入: 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。


思路：
第一种思路：当分解式中拆分成4以上时，比如5，那么再次拆分为 2 * 3 = ...]]></description><category></category></item><item><title><![CDATA[如果一个数列至少有三个元素，并且任意两个相邻元素之差相同，则称该数列为等差数列。]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103112198</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103112198</guid><author>Cheng_MY</author><pubDate>Sun, 17 Nov 2019 19:42:11 +0800</pubDate><description><![CDATA[如果一个数列至少有三个元素，并且任意两个相邻元素之差相同，则称该数列为等差数列。
例如，以下数列为等差数列:
1, 3, 5, 7, 9
7, 7, 7, 7
3, -1, -5, -9
以下数列不是等差数列。
1, 1, 2, 5, 7
示例:

A = [1, 2, 3, 4]

返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4...]]></description><category></category></item><item><title><![CDATA[从另一个角度理解Java中的反射]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103070751</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103070751</guid><author>Cheng_MY</author><pubDate>Thu, 14 Nov 2019 22:50:09 +0800</pubDate><description><![CDATA[从另一个角度理解Java中的反射
主要内容：
JVM是如何构建一个实例的
.class文件
类加载器
Class类
反射API
JVM是如何构建一个实例的
假设main方法中有以下代码：
Person p = new Person();

会经历以下这个过程：

通过new创建实例和反射创建实例，都绕不开Class对象。
.class文件
有人用编辑器打开.class文件看过吗？
比如我现在写一个...]]></description><category></category></item><item><title><![CDATA[java中的类加载器]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103069289</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103069289</guid><author>Cheng_MY</author><pubDate>Thu, 14 Nov 2019 16:43:39 +0800</pubDate><description><![CDATA[Java中的类加载器
面试官：请说说你理解的类加载器
我：通过一个类的全限定名来获取描述此类的二进制字节流的这个动作，放到Java虚拟机外部去实现，以便让应用程序自己决定如何去获取所需要的类。实现这个类动作的代码模块成为“类加载器”
面试官：说说有哪几种类加载器，他们的职责分别是什么，他们之前存在什么样的约定
我：类加载的结构如下：


BootstrapClassLoader：启动类类加载器，它...]]></description><category></category></item><item><title><![CDATA[数独问题---编写一个程序，通过已填充的空格来解决数独问题。  一个数独的解法需遵循如下规则：  数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103022934</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103022934</guid><author>Cheng_MY</author><pubDate>Tue, 12 Nov 2019 10:01:55 +0800</pubDate><description><![CDATA[编写一个程序，通过已填充的空格来解决数独问题。
一个数独的解法需遵循如下规则：
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
空白格用 ‘.’ 表示。



思路：同样是采用回溯法，用三个数组，分别保存每一次填完数字之后，所在行，列，小方块的记录。并且数组长度都为 int[9][10]，设置这种长度的原...]]></description><category></category></item><item><title><![CDATA[N皇后问题-n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上，并且使皇后彼此之间不能相互攻击。]]></title><link>https://blog.csdn.net/Cheng_MY/article/details/103017665</link><guid>https://blog.csdn.net/Cheng_MY/article/details/103017665</guid><author>Cheng_MY</author><pubDate>Mon, 11 Nov 2019 20:54:21 +0800</pubDate><description><![CDATA[n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上，并且使皇后彼此之间不能相互攻击。相互攻击就是说：在同一行、同一列或者在同一斜线方向时，不能同时存在两个皇后。

示例:

输入: 4
输出: [
 [".Q..",  // 解法 1
  "...Q",
  "Q...",
  "..Q."],

 ["..Q.",  // 解法 2
  "Q...",
  "...Q",
  ".Q...]]></description><category></category></item></channel></rss>