<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[techy649的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/techy649</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; techy649]]></copyright><item><title><![CDATA[代码随想录第41天 | 动态规划part03]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/135095418</link><guid>https://blog.youkuaiyun.com/techy649/article/details/135095418</guid><author>techy649</author><pubDate>Tue, 19 Dec 2023 21:56:20 +0800</pubDate><description><![CDATA[● 343. 整数拆分● 96.不同的二叉搜索树。]]></description><category></category></item><item><title><![CDATA[代码随想录第39天 | 动态规划part02]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/135094457</link><guid>https://blog.youkuaiyun.com/techy649/article/details/135094457</guid><author>techy649</author><pubDate>Tue, 19 Dec 2023 21:07:40 +0800</pubDate><description><![CDATA[● 62.不同路径● 63. 不同路径 II。]]></description><category></category></item><item><title><![CDATA[代码随想录第38天 | 动态规划part01]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/135072482</link><guid>https://blog.youkuaiyun.com/techy649/article/details/135072482</guid><author>techy649</author><pubDate>Mon, 18 Dec 2023 21:47:11 +0800</pubDate><description><![CDATA[● 509. 斐波那契数
● 70. 爬楼梯
● 746. 使用最小花费爬楼梯动态规划(Dynamic Programming)简称DP，
如果某一问题有很多重叠子问题，使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的，这一点就区分于贪心.
贪心没有状态推导，而是从局部直接选最优的.例如：有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i]，得到的价值是value[i] 。每件物品只能用一次，求解将哪些物品装入背包里物品价值总和最大。动态规划中dp[j]]]></description><category></category></item><item><title><![CDATA[代码随想录第35天 | 贪心算法 part04]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/135005310</link><guid>https://blog.youkuaiyun.com/techy649/article/details/135005310</guid><author>techy649</author><pubDate>Thu, 14 Dec 2023 22:00:05 +0800</pubDate><description><![CDATA[● 860.柠檬水找零● 406.根据身高重建队列● 452. 用最少数量的箭引爆气球。]]></description><category></category></item><item><title><![CDATA[代码随想录第34天 | 贪心算法 part03]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134983233</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134983233</guid><author>techy649</author><pubDate>Wed, 13 Dec 2023 22:01:53 +0800</pubDate><description><![CDATA[● 1005.K次取反后最大化的数组和● 134. 加油站● 135. 分发糖果。]]></description><category></category></item><item><title><![CDATA[代码随想录第31天 | 贪心算法 part01]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134937658</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134937658</guid><author>techy649</author><pubDate>Mon, 11 Dec 2023 22:14:21 +0800</pubDate><description><![CDATA[455.分发饼干● 376. 摆动序列● 53. 最大子序和。]]></description><category></category></item><item><title><![CDATA[代码随想录第32天 | 贪心算法 part02]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134937566</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134937566</guid><author>techy649</author><pubDate>Mon, 11 Dec 2023 22:08:21 +0800</pubDate><description><![CDATA[● 122.买卖股票的最佳时机II
● 55. 跳跃游戏
● 45.跳跃游戏II给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易（多次买卖一支股票）。
注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
示例 1:本题本质上是选取数组中差值最大的两个数(还是按顺序来的)，
也就是nums[i+n] - nums[i]的最大值。
但是交易不只一次，也就是计算多次差值的和，因此涉及到 多次数 小差值 和 少次]]></description><category></category></item><item><title><![CDATA[代码随想录第27天 | 回溯算法part03]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134842205</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134842205</guid><author>techy649</author><pubDate>Wed, 06 Dec 2023 22:00:42 +0800</pubDate><description><![CDATA[● 39. 组合总和● 40.组合总和II● 131.分割回文串。]]></description><category></category></item><item><title><![CDATA[代码随想录第25天 | 回溯算法part02]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134794585</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134794585</guid><author>techy649</author><pubDate>Mon, 04 Dec 2023 21:37:13 +0800</pubDate><description><![CDATA[找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数，并且每种组合中不存在重复的数字。关键：本题就是其余思路和上一题相同。本题k相当于树的深度，9（因为整个集合就是9个数）就是树的宽度。sum为统计已有数字加起来的总和，会随着每次迭代更新，因此加入形参中。其实这里sum这个参数也可以省略，，然后判断如果target为0了，说明收集到符合条件的结果了。target为总和应该达到的目标，可使用全局变量，不用每次都传入。同理，剪枝操作也很容易想到。]]></description><category></category></item><item><title><![CDATA[代码随想录第24天 | 回溯算法part01]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134771528</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134771528</guid><author>techy649</author><pubDate>Sun, 03 Dec 2023 22:05:13 +0800</pubDate><description><![CDATA[回溯是递归的副产品，只要有递归就会有回溯。。。如果想让回溯法高效一些，可以加一些剪枝的操作，但也改不了回溯法就是穷举的本质。那么既然回溯法并不高效为什么还要用它呢？因为没得选，一些问题能暴力搜索出来就不错了，撑死了再剪枝一下，还没有更高效的解法。关键：如何理解回溯法，是的，所有回溯法的问题都可以抽象为树形结构！因为回溯法解决的都是在集合中递归查找子集，。递归就要有终止条件，所以必然是一棵高度有限的树(N叉树。]]></description><category></category></item><item><title><![CDATA[代码随想录第18天 | 二叉树 part05]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134673979</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134673979</guid><author>techy649</author><pubDate>Tue, 28 Nov 2023 18:31:41 +0800</pubDate><description><![CDATA[为切割点，先切中序数组，根据中序数组，反过来再切后序数组。一层一层切下去，每次后序数组最后一个元素就是节点元素。本题是从两个数组中提取信息进行构建二叉树。递归步骤如下，先处理后序数组，后处理中序数组，再转回后序数组。]]></description><category></category></item><item><title><![CDATA[代码随想录第17天 | 二叉树part04]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134655776</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134655776</guid><author>techy649</author><pubDate>Mon, 27 Nov 2023 22:06:08 +0800</pubDate><description><![CDATA[给定一个二叉树，判断它是否是高度平衡的二叉树。本题中，一棵高度平衡二叉树定义为：一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。本题同样使用递归(DFS)。在主函数之外使用一个递归函数，如果为AVL则返回树的高度，不是则返回-1.那么如何标记左右子树是否差值大于1呢？如果当前传入节点为根节点的二叉树已经不是二叉平衡树了，还返回高度的话就没有意义了。所以如果已经不是二叉平衡树了，可以返回-1 来标记已经不符合平衡树的规则了。明确终止条件。]]></description><category></category></item><item><title><![CDATA[代码随想录第16天 | 二叉树part03]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134634080</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134634080</guid><author>techy649</author><pubDate>Sun, 26 Nov 2023 21:56:09 +0800</pubDate><description><![CDATA[给定一个二叉树，找出其。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。可得，本题中我们通过后序求的根节点高度来求的二叉树最大深度。定单层递归的逻辑：先求它的左子树的深度，再求右子树的深度，最后取就是目前节点为根节点的树的深度。这种思路对多叉树也一样，对每个分叉的长度拉成一个数组，再取最大值。迭代法，使用层序遍历正好，因为计算的是层数。注意是迭代，所以有for循环。]]></description><category></category></item><item><title><![CDATA[代码随想录第13天 | 栈与队列part03]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134542036</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134542036</guid><author>techy649</author><pubDate>Tue, 21 Nov 2023 21:57:56 +0800</pubDate><description><![CDATA[给定一个数组 nums，有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶：在线性时间复杂度内解决此题。关键思路：自己创建一个子队列，维持这个队列保持单调递增或者递减。比如：让出口处元素保持最大，后面的元素依次递减，那么就在传进元素时，不断留下更大的，抛出小的，直到后面进入队列的元素没有前者大为止。]]></description><category></category></item><item><title><![CDATA[代码随想录第11天 |栈与队列part02]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134512556</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134512556</guid><author>techy649</author><pubDate>Mon, 20 Nov 2023 20:09:16 +0800</pubDate><description><![CDATA[给定一个只包括 ‘(’，‘)’，‘{’，‘}’，‘[’，‘]’ 的字符串，判断字符串是否有效。首先进行分析：闭合正确的前提是，左右括号数量相等；其次才是左右括号从内向外一一匹配。同样，不匹配也就只有三种可能：左括号大于右，右括号大于左，左右匹配时种类不同。方法就是：每匹配到一个左括号，就把它相对应的右括号压入栈中；每读到一个右括号，如果栈顶和它相同，就挪出去。不相同则直接报错。如果字符串没读完，栈已经空了，也同样报错。直到最后看栈是否为空。]]></description><category></category></item><item><title><![CDATA[代码随想录第10天 | 第五章 栈与队列part01]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134494190</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134494190</guid><author>techy649</author><pubDate>Sun, 19 Nov 2023 21:26:14 +0800</pubDate><description><![CDATA[使用栈实现队列的下列操作：push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。本题是用栈去实现队列的功能。题目也明确了方法：使用两个栈实现此功能，一个输入栈一个输出栈。两次先进后出便是先进先出。本题关键反倒不是思考的过程，而是对各语言自己封装的栈一个熟悉和运用的过程，无论是c++ STL的Stack，还是java自己的Stack类和Deque类。毕竟不用真的自己造轮子。]]></description><category></category></item><item><title><![CDATA[代码随想录第8天| 字符串part01]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134442785</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134442785</guid><author>techy649</author><pubDate>Thu, 16 Nov 2023 22:15:28 +0800</pubDate><description><![CDATA[编写一个函数，其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1：输入：[“h”,“e”,“l”,“l”,“o”]  输出：[“o”,“l”,“l”,“e”,“h”]在反转链表中，使用了双指针的方法。那么反转字符串依然是使用双指针的方法，只不过对于字符串的反转，其实要比链表简单一些。]]></description><category></category></item><item><title><![CDATA[代码随想录算第7天 | 哈希表part02]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134431230</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134431230</guid><author>techy649</author><pubDate>Wed, 15 Nov 2023 22:45:58 +0800</pubDate><description><![CDATA[接下来移动left 和right，因为i是每轮才移动的所以当轮不能动。如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了，因为数组从大到小排序，所以。]]></description><category></category></item><item><title><![CDATA[代码随想录第6天 哈希表part01]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134384837</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134384837</guid><author>techy649</author><pubDate>Mon, 13 Nov 2023 22:24:33 +0800</pubDate><description><![CDATA[给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true示例 2: 输入: s = “rat”, t = “car” 输出: false你可以假设字符串只包含小写字母。关键：只需要判断每种字母出现的频率，使用哈希表(数组)储存，而不必考虑字母的ASCII值。暴力解法为On2，无需赘述。]]></description><category></category></item><item><title><![CDATA[代码随想录 day4 第二章 链表part02]]></title><link>https://blog.youkuaiyun.com/techy649/article/details/134362811</link><guid>https://blog.youkuaiyun.com/techy649/article/details/134362811</guid><author>techy649</author><pubDate>Sun, 12 Nov 2023 21:58:45 +0800</pubDate><description><![CDATA[给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。注意是每隔两个交换一次，因此操作应当以两个节点为单位。自己想确实很混乱，但是看解析一看就懂。用了虚拟头节点cur，还用了另外三个节点引用保存cur.next, cur.next.next和cur.next.next.next. 用缓存的原因是可以防止超时。]]></description><category></category></item></channel></rss>