<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Grit_ICPC的博客]]></title><description><![CDATA[凡物之骤为之而追成焉者,其器小也;物之一览而易尽者,其中无有也]]></description><link>https://blog.youkuaiyun.com/Grit_ICPC</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Grit_ICPC]]></copyright><item><title><![CDATA[根据数组层次遍历构建二叉树]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/108521997</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/108521997</guid><author>Grit_ICPC</author><pubDate>Thu, 10 Sep 2020 20:14:36 +0800</pubDate><description><![CDATA[/**
    15
    15 7 20 -1 -1 3 12 -1 -1 -1 -1 14 8 -1 -1
    2 4
*/
import java.util.*;

public class Main2 {
    static int[]  value ;
    static class TreeNode{
        int val;
        TreeNode left,right;
        public TreeNode(int t) {
            t.]]></description><category></category></item><item><title><![CDATA[The server quit without updating PID file (*/mysqld.pid）]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/105231740</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/105231740</guid><author>Grit_ICPC</author><pubDate>Tue, 31 Mar 2020 20:54:18 +0800</pubDate><description><![CDATA[Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/run/mysqld/mysqld.pid).

数据库在启动的时候报错，这个问题，网上的解决方法都没有搞定，于是发现我数据库属于mysql组mysql用户的，但是里面有文件属于root，使用root用户启动的，之后将所有文件换成my...]]></description><category></category></item><item><title><![CDATA[【leetCode-递归、DP】650. 只有两个键的键盘]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/104139426</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/104139426</guid><author>Grit_ICPC</author><pubDate>Sat, 01 Feb 2020 23:00:41 +0800</pubDate><description><![CDATA[最初在一个记事本上只有一个字符 'A'。你每次可以对这个记事本进行两种操作：

Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。
Paste (粘贴) : 你可以粘贴你上一次复制的字符。
给定一个数字n。你需要使用最少的操作次数，在记事本中打印出恰好n个 'A'。输出能够打印出n个 'A' 的最少操作次数。来源：


示例 1:

输入: ...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP】买卖股票的最佳时机（1-4）]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/104137730</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/104137730</guid><author>Grit_ICPC</author><pubDate>Sat, 01 Feb 2020 20:32:35 +0800</pubDate><description><![CDATA[参考：传送门

定义通用状态dp[i][j][k] 数组，含义dp[第一天...第N天的股票价格 ][限制交易次数][ 0未持有股票；1持有股票 ]

通用状态转移方程：


dp[i][j][0] = Math.max(dp[i - 1][ j ][0], dp[i - 1][ j ][1] + prices[i] );
dp[i][j][1] = Math.max(dp[i - 1][ j ]...]]></description><category></category></item><item><title><![CDATA[【leetCode-搜索、DP】139. 单词拆分]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/104105670</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/104105670</guid><author>Grit_ICPC</author><pubDate>Wed, 29 Jan 2020 12:29:34 +0800</pubDate><description><![CDATA[给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict，判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。

说明：拆分时可以重复使用字典中的单词。

你可以假设字典中没有重复的单词。


示例 1：

输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP-完全背包】518. 零钱兑换 II （三种解法、两种优化）]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103975987</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103975987</guid><author>Grit_ICPC</author><pubDate>Tue, 14 Jan 2020 16:50:02 +0800</pubDate><description><![CDATA[给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。





示例 1:

输入: amount = 5, coins = [1, 2, 5]
输出: 4
解释: 有四种方式可以凑成总金额:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
示例 2:

输入: amount = 3, coins = [2]
输出: 0
...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP-多维01背包】474. 一和零]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103975540</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103975540</guid><author>Grit_ICPC</author><pubDate>Tue, 14 Jan 2020 16:38:59 +0800</pubDate><description><![CDATA[现在，假设你分别支配着 m 个0和 n 个1。另外，还有一个仅包含0和1字符串的数组。

你的任务是使用给定的m 个0和 n 个1，找到能拼出存在于数组中的字符串的最大数量。每个0和1至多被使用一次。

注意:给定0和1的数量都不会超过100。
给定字符串数组的长度不会超过600。


示例 1:

输入: Array = {"10", "0001", ...]]></description><category></category></item><item><title><![CDATA[【leetCode-DFS】【leetCode-DP-01背包】279. 完全平方数]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103968883</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103968883</guid><author>Grit_ICPC</author><pubDate>Tue, 14 Jan 2020 10:44:58 +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+...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP-01背包】416. 分割等和子集]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103926377</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103926377</guid><author>Grit_ICPC</author><pubDate>Fri, 10 Jan 2020 16:19:00 +0800</pubDate><description><![CDATA[给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集，使得两个子集的元素和相等。

注意:每个数组中的元素不会超过 100


示例 1:

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

输出: true

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


示例2:

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

输出: false

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

数组...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP】300. 最长上升子序列]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103888225</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103888225</guid><author>Grit_ICPC</author><pubDate>Wed, 08 Jan 2020 12:52:50 +0800</pubDate><description><![CDATA[给定一个无序的整数数组，找到其中最长上升子序列的长度。

示例:


输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是[2,3,7,101]，它的长度是 4。

 定义dp[i]为截止数组的第i个位置的最长上升序列，定义转移方程：


    for(int i = 0;i &lt; len-1;i++) {
            for(...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP】91. 解码方法]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103827158</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103827158</guid><author>Grit_ICPC</author><pubDate>Fri, 03 Jan 2020 21:19:51 +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
解释:它可以解码为 "BZ" (2 26), ...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP-完全背包】279. 完全平方数]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103805840</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103805840</guid><author>Grit_ICPC</author><pubDate>Thu, 02 Jan 2020 16:01:20 +0800</pubDate><description><![CDATA[给定正整数n，找到若干个完全平方数（比如1, 4, 9, 16, ...）使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。


示例1:

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

输入: n = 13
输出: 2
解释: 13 = 4 + 9.

题目类似于换零钱（完全背包）

见：链接

code:


class Soluti...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP-完全背包】322. 零钱兑换]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103803610</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103803610</guid><author>Grit_ICPC</author><pubDate>Thu, 02 Jan 2020 14:53:03 +0800</pubDate><description><![CDATA[完全背包是物品放入背包中没有数量上的限制，而多重背包有数量限制

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额，返回-1。


示例1:

输入: coins = [1, 2, 5], amount = 11
输出: 3
解释: 11 = 5 + 5 + 1
示例 2:

输入: co...]]></description><category></category></item><item><title><![CDATA[【背包九章完全背包】获取最大价值-每件物品可以重复放 （附 优化）]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103752336</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103752336</guid><author>Grit_ICPC</author><pubDate>Sun, 29 Dec 2019 12:08:06 +0800</pubDate><description><![CDATA[输入


4 5
 
1 2
2 4
3 4
4 5



题目：小明有容量m的袋子，有n个物品 物品有价值和体积 每件物品可以重复放入背包，问最多能装多少价值的物品。

前两个数为n,m (n为n个物品，m代表有m容量的袋子)

完全背包


    static int[] v;
    static int[] w;
    static int n,W,k;
    public sta...]]></description><category></category></item><item><title><![CDATA[【背包九章-01背包】获取最大价值 （附 01背包一维数组优化的时候为什么容量要逆序遍历）]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103738466</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103738466</guid><author>Grit_ICPC</author><pubDate>Sat, 28 Dec 2019 13:18:29 +0800</pubDate><description><![CDATA[输入


4 5

1 2
2 4
3 4
4 5

题目：小明有容量m的袋子，有n个物品 物品有价值和体积，问最多能装多少价值的物品。

前两个数为n,m (n为n个物品，m代表有m容量的袋子)

01背包


    static int[] v;
    static int[] w;
    static int n,W;
    public static  int dp01(int [...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP】343. 整数拆分]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103720868</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103720868</guid><author>Grit_ICPC</author><pubDate>Thu, 26 Dec 2019 21:31:40 +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。
说明: 你可以假设n不小于 2 且不大于 58。



通过列举出一些数后可...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP】413. 等差数列划分]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103694456</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103694456</guid><author>Grit_ICPC</author><pubDate>Wed, 25 Dec 2019 11:12:49 +0800</pubDate><description><![CDATA[如果一个数列至少有三个元素，并且任意两个相邻元素之差相同，则称该数列为等差数列。

例如，以下数列为等差数列:


1, 3, 5, 7, 9
7, 7, 7, 7
3, -1, -5, -9


以下数列不是等差数列。


1, 1, 2, 5, 7



数组 A 包含 N 个数，且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q)，P 与 Q 是整数且满足 0&lt;=P&lt;...]]></description><category></category></item><item><title><![CDATA[【牛客】发邮件]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103673328</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103673328</guid><author>Grit_ICPC</author><pubDate>Mon, 23 Dec 2019 21:10:49 +0800</pubDate><description><![CDATA[题目传送门：点我

    NowCoder每天要给很多人发邮件。有一天他发现发错了邮件，把发给A的邮件发给了B，把发给B的邮件发给了A。于是他就思考，要给n个人发邮件，在每个人仅收到1封邮件的情况下，有多少种情况是所有人都收到了错误的邮件？
即没有人收到属于自己的邮件。

结合我们的做题步骤：


1）.定义一个能够清楚描述最优子问题的数组（明确数组描述的含义）。

2）.找出数组元素之...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP】198. 打家劫舍]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103638350</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103638350</guid><author>Grit_ICPC</author><pubDate>Fri, 20 Dec 2019 20:46:21 +0800</pubDate><description><![CDATA[结合我们的做题步骤：


1）.定义一个能够清楚描述最优子问题的数组（明确数组描述的含义）。

2）.找出数组元素之间的关系式(状态转移方程)

3）.找出初始值

code:


  public static int rob(int[] nums) {
        //1.dp[i] 截至到第i户抢的最多金额
        //2.状态转移方程 dp[i] = max(dp[i...]]></description><category></category></item><item><title><![CDATA[【leetCode-DP】  72.	编辑距离]]></title><link>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103638122</link><guid>https://blog.youkuaiyun.com/Grit_ICPC/article/details/103638122</guid><author>Grit_ICPC</author><pubDate>Fri, 20 Dec 2019 20:44:29 +0800</pubDate><description><![CDATA[给定两个单词word1 和word2，计算出将word1转换成word2 所使用的最少操作数。

你可以对一个单词进行如下三种操作：

插入一个字符
删除一个字符
替换一个字符
示例1:

输入: word1 = "horse", word2 = "ros"
输出: 3
解释: 
horse -&gt; rorse (将 'h' 替换为 'r')
rorse -&gt; rose ...]]></description><category></category></item></channel></rss>