<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Grace_67的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Grace_67</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Grace_67]]></copyright><item><title><![CDATA[第一章 设计模式相关内容]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/143669357</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/143669357</guid><author>Grace_67</author><pubDate>Sun, 10 Nov 2024 23:44:26 +0800</pubDate><description><![CDATA["设计模式"最初并不是出现在软件设计中，而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大（Christopher Alexander）在他的著作《建筑模式语言：城镇、建筑、构造》中描述了一些常见的建筑设计问题，并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1990年软件工程界开始研讨设计模式的话题，后来召开了多次关于设计模式的研讨会。]]></description><category></category></item><item><title><![CDATA[LeetCode Day42|●1049. 最后一块石头的重量 II(给定容量的背包，尽量装，最多能装的重量是多少)●494. 目标和(有多少种方法)●474.一和零(多重背包，最多有多少个物品 )]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140473954</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140473954</guid><author>Grace_67</author><pubDate>Fri, 09 Aug 2024 10:43:04 +0800</pubDate><description><![CDATA[把石头尽可能分成两堆，如果两堆的重量如果相似的话，那么相撞后所剩的值就是最小值类似：分割等和子集1背包问题：每个物品只能用一次和 416. 分割等和子集 很像本题：装满背包有多少种方法分割等和子集： 能不能装满背包最后一块石头：尽量装这个背包纯01背包问题：装满这个背包它的最大价值是多少初始化：不要纠结字面意思，可以带入一个场景去看一下  eg.[0] target=0 dp[0]=1重点理解 递推公式：dp[j] += dp[j - nums[i]]，这个公式后面的提问。]]></description><category></category></item><item><title><![CDATA[Jvm基础篇| ●导学●00 目录●01 初识 JVM●02 字节码文件详解●03 运行时数据区●04 自动垃圾回收]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140727000</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140727000</guid><author>Grace_67</author><pubDate>Fri, 26 Jul 2024 23:54:28 +0800</pubDate><description><![CDATA[singleDoc#]《基础篇》]]></description><category></category></item><item><title><![CDATA[LeetCode Day42|●01背包问题 二维（46.携带研究材料）● 01背包问题 一维（46.携带研究材料）●416. 分割等和子集(初始化和遍历顺序式难点)]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140404065</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140404065</guid><author>Grace_67</author><pubDate>Thu, 25 Jul 2024 23:55:01 +0800</pubDate><description><![CDATA[01背包、完全背包、多重背包、混合背包、分组背包01背包：有n种物品每种物品只有一个完全背包：有n种物品每种物品有无限个多重背包：有n种物品每种物品的个数不相同背包问题：每个物品有自己的重量也有自己的价值，一个重量最多放m的背包，问这个背包最多能装价值为多少的物品ij和dp[i][j]的含意:是0到物品i之间的物品任意取放进容量为j的最大价值为dp[i][j]滚动数组解题抽象成01背包问题如何初始化确定遍历顺序。]]></description><category></category></item><item><title><![CDATA[LeetCode Day13|● 150. 逆波兰表达式求值(后缀表达式适合计算机运算)● 239. 滑动窗口最大值(自己实现单调队列)● 347.前 K 个高频元素（key:元素value:次数）]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140473918</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140473918</guid><author>Grace_67</author><pubDate>Thu, 25 Jul 2024 10:25:11 +0800</pubDate><description><![CDATA[后缀表达式是一种很适合计算机来做运算的一种表达式，因为后续表达式不需要加括号关键是理解逆波兰表达式用小顶堆，每次pop最小的元素，留下的都是最大的如何统计频率如何用堆来解决前K个高频的问题。]]></description><category></category></item><item><title><![CDATA[LeetCode Day10|● 理论基础● 232.用栈实现队列（两个栈实现）● 225. 用队列实现栈（一个队列实现）● 20. 有效的括号（栈，存反）● 1047. 删除字符串中的所有相邻重复项]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140473874</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140473874</guid><author>Grace_67</author><pubDate>Wed, 17 Jul 2024 22:27:15 +0800</pubDate><description><![CDATA[复用思想函数复用很重要节约资源方法尽量复用第一种情况是在遍历完之后处理的开心消消乐。]]></description><category></category></item><item><title><![CDATA[LeetCode Day8|● 344.反转字符串（原地） ● 541. 反转字符串II（i可以大步跨越） ● 卡码网：54.替换数字（ACM模式多熟悉熟悉）]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140404007</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140404007</guid><author>Grace_67</author><pubDate>Sun, 14 Jul 2024 08:23:49 +0800</pubDate><description><![CDATA[一般每门编程语言的都有库函数实现for循环里面的i可以成段成段（2k 段）的跳越，不一定要i++一步一步地跳跃acm模式得多熟悉熟悉。]]></description><category></category></item><item><title><![CDATA[LeetCode Day6|● 454.四数相加II(二二分|用map) ● 383. 赎金信(映射) ● 384. 三数之和（双指针） ● 385. 四数之和（384三数之和再套一层循环） ● 总结]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140375158</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140375158</guid><author>Grace_67</author><pubDate>Sat, 13 Jul 2024 16:19:24 +0800</pubDate><description><![CDATA[查找元素是否存在用哈希法双指针思路简单但是去重是关键三数之后的思路上再套一层for循环哈希表是用来快速判断一个元素是否出现在集合中虽然map是万能的，但是也要考虑什么时候用数组，什么时候用set。]]></description><category></category></item><item><title><![CDATA[LeetCode Day5|● 哈希表理论基础● 242.有效的字母异位词（数组） ● 349. 两个数组的交集（set）● 202. 快乐数（两个函数方便点）● 1. 两数之和(map)]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140353681</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140353681</guid><author>Grace_67</author><pubDate>Fri, 12 Jul 2024 00:16:22 +0800</pubDate><description><![CDATA[数组也可实现hash，并且比较快注意条件限制数组相对效率更高为什么想要使用哈希法为什么要用mapmap的作用：存放遍历过的元素map中的key:遍历的树，value:存数组的下标。]]></description><category></category></item><item><title><![CDATA[LeetCode Day36|●56. 合并区间(先存起来)● 738.单调递增的数字（从后往前变量，flag的妙用）● 968.监控二叉树（二叉树+贪心）]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140341118</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140341118</guid><author>Grace_67</author><pubDate>Thu, 11 Jul 2024 15:25:34 +0800</pubDate><description><![CDATA[重叠类问题：排序—>重叠（1.重叠怎么处理 2.没有重叠怎么处理）遍历顺序：只有从后向前遍历才能重复利用上一次比较的结果优先从叶子节点的父节点开始去安装摄像头，然后每隔两个节点按照一个摄像头。]]></description><category></category></item><item><title><![CDATA[LeetCode Day35|● 452. 用最少数量的箭引爆气球（难点：判断多个气球重叠）● 435. 无重叠区间（同452思想）● 763.划分字母区间（精妙的hash数组用来记录字符的最远位置）]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140336137</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140336137</guid><author>Grace_67</author><pubDate>Thu, 11 Jul 2024 10:45:09 +0800</pubDate><description><![CDATA[射爆气球后不需要把元素数组移除判断气球重叠与不重叠判断气球重叠后如何判断气球于下一个气球重叠左边界排序+右边界排序贪心思想不明显核心思想是：用最远距离模拟了圈字符的行为。]]></description><category></category></item><item><title><![CDATA[LeetCode Day34|● 134. 加油站● 135. 分发糖果(两边分别考虑)● 860.柠檬水找零（理清思路）● 406.根据身高重建队列（新队列：避免重复访问）]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140086285</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140086285</guid><author>Grace_67</author><pubDate>Wed, 03 Jul 2024 11:44:49 +0800</pubDate><description><![CDATA[暴力解法用while熟练使用贪心算法：局部最优推出全局最优一次是从左到右遍历，只比较右边孩子评分比左边大的情况。一次是从右到左遍历，只比较左边孩子评分比右边大的情况。梳理清楚逻辑就能轻松应对题目了重新定义一个新队列的原因：避免遍历的时候因为插入的原因重复访问同一个元素。]]></description><category></category></item><item><title><![CDATA[LeetCode Day31|● 122.买卖股票的最佳时机II（利润拆分）●55. 跳跃游戏（覆盖的思想）● 45.跳跃游戏II（小步数求最大的覆盖范围）●1005.K次取反后最大化的数组和（2贪）]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/140024321</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/140024321</guid><author>Grace_67</author><pubDate>Fri, 28 Jun 2024 15:10:24 +0800</pubDate><description><![CDATA[股票问题是动态规划中的一个系列贪心是本题利润拆分的关键点贪心无套路本题的局部最优：每遍历一个元素的时候都去尽可能的增加它的覆盖范围，即去取它的最大覆盖范围；全局最优就是整个数组序列的最大覆盖范围i为什么小于等于cover，因为i遍历需要在覆盖范围里面移动，超出覆盖范围了移动就没有意义了以最小的步数增加最大的覆盖范围，直到覆盖范围覆盖了终点贪心的思考方式：局部最优推出全局最优。]]></description><category></category></item><item><title><![CDATA[LeetCode Day29|●理论基础（局部最优推出全局最优）●455.分发饼干（大饼干尽量去喂大胃口、小饼干能满足一个小孩就满足一个小孩）●376. 摆动序列（两种平坡）●53. 最大子序和]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/139869632</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/139869632</guid><author>Grace_67</author><pubDate>Sat, 22 Jun 2024 15:14:02 +0800</pubDate><description><![CDATA[局部最优求全局最优局部最优得全局最优有两个极端，所以不要轻视常识性推导+举反例要考虑：1.上下有平坡、2.单调有平坡的情况想清楚贪心贪的是哪里，局部最优是哪里不是遇到负数就跳过而是前面的连续和为负数我们才选择下一个元素作为我们的起点。]]></description><category></category></item><item><title><![CDATA[LeetCode Day28|491.递增子序列 46.全排列 47.全排列 II 322.重新安排行程（可跳过）51.N皇后（适当跳过）37.解数独（适当跳过）总结]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/139854314</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/139854314</guid><author>Grace_67</author><pubDate>Fri, 21 Jun 2024 16:37:43 +0800</pubDate><description><![CDATA[没有 hs.removeLast(nums[i]);因为haset主要的作用就是记录当前的层的数值不能起重复hashset每次递归都会被重新初始化定义与顺序有关系遍历的时候从0开始要记得对nums进行排序组合问题和排列问题是在树形结构的叶子节点上收集结果，而子集问题就是取树上所有节点的结果。]]></description><category></category></item><item><title><![CDATA[LeetCode Day27|93.复原IP地址（与131分割回文串有关系） 78.子集（子集问题是找数的所有节点） 90.子集II（去重）]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/139813044</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/139813044</guid><author>Grace_67</author><pubDate>Thu, 20 Jun 2024 14:05:16 +0800</pubDate><description><![CDATA[子集问题和组合问题的区别、子集问题和分割问题的区别：组合问题和分割问题都是收集数的子节点子集问题是找数的所有节点。]]></description><category></category></item><item><title><![CDATA[LeetCode Day25|● 216.组合总和III(存放结果时相较于模板多了一层判断 + 剪枝) ● 17.电话号码的字母组合（多个集合求组合）● 131.分割回文串（双指针判断是否是回文串）]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/139549267</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/139549267</guid><author>Grace_67</author><pubDate>Sat, 08 Jun 2024 21:07:03 +0800</pubDate><description><![CDATA[对比组合的两道题目：216、77多个集合求组合细节处理很多回溯模板复习// 回溯算法模版void backtracking(参数){if(终止条件){// 搜索到叶子结点就找到了一条满足条件的答案存放结果；return;// 遍历过程 for循环横向遍历，backtracking递归纵向遍历for(选择：本层集合中的元素（数中节点孩子的数量就是集合的大小）){处理结点；backtracking（路径，选择列表）；//递归回溯，撤销处理的结果。]]></description><category></category></item><item><title><![CDATA[LeetCode day22 |● 669. 修剪二叉搜索树(通过返回值来删除节点) ● 108.将有序数组转换为二叉搜索树（平衡） ● 538.把二叉搜索树转换为累加树（反中序） ● 总结篇]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/139445275</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/139445275</guid><author>Grace_67</author><pubDate>Tue, 04 Jun 2024 20:49:50 +0800</pubDate><description><![CDATA[二叉树移除节点的过程是通过当前层往上一层返回值然后上一层其对应的孩子来接住返回值最终达到删除的效果删除节点的子树中可能还有符合区间的节点，所以还需要继续往下进行递归区间划分整体的一致性（循环不变量的重要性）构造的二叉树不唯一构造二叉树的思路不断中间分割，然后递归处理左区间，右区间，也可以说是分治递归三部曲：返回值、参数、终止条件、单层逻辑二叉树的遍历方式深度优先遍历前序遍历（递归法、迭代法）中序遍历（递归法、迭代法）后续遍历 （递归法、迭代法）广度优先遍历。]]></description><category></category></item><item><title><![CDATA[LeetCode Day22|235. 二叉搜索树的最近公共祖先（利用二叉搜索树的特性） ● 701.二叉搜索树中的插入操作(递归、迭代) ● 450.删除二叉搜索树中的节点(涉及到改树的结构)]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/139417095</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/139417095</guid><author>Grace_67</author><pubDate>Mon, 03 Jun 2024 23:26:57 +0800</pubDate><description><![CDATA[二叉搜索数帮我们确定了搜索方向往下遍历遇到第一个节点，在p和q之间，那么这个节点一定是最近的公共祖先而不是次级的向上返回：向左遍历的时候就返回给当前层的左子树，向右遍历的时候就会返回给当前层的右子树通过递归函数的返回值完成新加入节点和其父节点的赋值操作搜索树的一个特性是有序性递归三部曲：确定递归函数参数以及返回值确定终止条件确定单层递归的逻辑二叉搜索树删除节点比增加节点复杂的多，因为删除节点操作涉及到结构的调整。]]></description><category></category></item><item><title><![CDATA[LeetCode Day21|● 530.二叉搜索树的最小绝对差（双指针） ● 501.二叉搜索树中的众数（众数可能不知一个、双指针） ● 236. 二叉树的最近公共祖先（遍历、后序遍历、回溯）]]></title><link>https://blog.youkuaiyun.com/Grace_67/article/details/139127169</link><guid>https://blog.youkuaiyun.com/Grace_67/article/details/139127169</guid><author>Grace_67</author><pubDate>Sun, 02 Jun 2024 21:22:52 +0800</pubDate><description><![CDATA[双指针移动二叉树搜索树求最值、差值，要利用好二叉搜索树是有序的这一特点代码能力不一定是高深的算法，有些时候是一些细节问题普通二叉树的求中的数的情况用直白想法暴力法统计最高出现频率元素的技巧统计频率count和最大频率maxCount配合双指针为什么没有这个技巧一定要遍历两次呢？因为要求的是集合，会有多个众数，如果规定只有一个众数，那么就遍历一次稳稳的了回溯可以将下面的结果一层一层的返回到上一层。]]></description><category></category></item></channel></rss>