<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Brillian123的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Brillian123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Brillian123]]></copyright><item><title><![CDATA[算法练习第29天|1005.K次取反后最大化的数组和]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/140307359</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/140307359</guid><author>Brillian123</author><pubDate>Tue, 09 Jul 2024 21:39:21 +0800</pubDate><description><![CDATA[贪心的思路：尽可能将绝对值比较大的负数取反成正数，正数保持不变。所以需要按照绝对值的大小对数组先进性依次排序。然后依次遍历元素，若为负数且k不为0，则将该负数取反。最后若k还有剩余，全作用到绝对值最小的最后那个元素上，这样能保证数组和最大化。选择下标 (1, 2, 2) ，nums 变为 [3,1,0,2]。选择下标 (1, 4) ，nums 变为 [2,3,-1,5,4]。选择下标 1 ，nums 变为 [4,-2,3]。以这种方式修改数组后，返回数组。可以多次选择同一个下标。]]></description><category></category></item><item><title><![CDATA[算法练习第28天|122.买卖股票的最佳时机 II、55.跳跃游戏]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/140209338</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/140209338</guid><author>Brillian123</author><pubDate>Sat, 06 Jul 2024 23:29:42 +0800</pubDate><description><![CDATA[因为要获取最大的利润，所以贪心的思想就是，在遍历所得到的利润时，如果利润为正，则可以买入一次第二天再卖出，准备下一轮的买入。由于第四天的价格为10，所以我第三天以5的价格买入，第四天以10的价格卖出，又获利了5元。随后，在第 4 天（股票价格 = 3）的时候买入，在第 5 天（股票价格 = 6）的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 1 天（股票价格 = 1）的时候买入，在第 5 天 （股票价格 = 5）的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。]]></description><category></category></item><item><title><![CDATA[算法练习第27天|455.分发饼干、376摆动序列、53. 最大子序和]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/140204195</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/140204195</guid><author>Brillian123</author><pubDate>Fri, 05 Jul 2024 11:50:34 +0800</pubDate><description><![CDATA[从代码角度上来讲：遍历 nums，从头开始用 count 累积，如果 count 一旦加上 nums[i]变为负数，那么就应该从 nums[i+1]开始从 0 累积 count 了，因为已经变为负数的 count，只会拖累总和。以数组nums = [-2,1,-3,4,-1,2,1,-5,4]为例，如果 -2，1 在一起，计算起点的时候，一定是从 1 开始计算，因为负数只会拉低总和，这就是贪心贪的地方！大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子，那么就应该优先满足胃口大的。]]></description><category></category></item><item><title><![CDATA[C++设计模式|结构型 代理模式]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/139396680</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/139396680</guid><author>Brillian123</author><pubDate>Sun, 02 Jun 2024 21:08:37 +0800</pubDate><description><![CDATA[代理模式是一种结构型设计模式，用于控制对其他对象的访问。在代理模式中，。比如说有一个文件加载的场景，为了避免直接访问“文件”对象，我们可以新增一个代理对象，代理对象中有一个对“文件对象”的，在代理对象的load方法中，可以在访问真实的文件对象之前进行一些操作，比如权限检查，然后调用真实文件对象的load方法，最后在访问真实对象后进行其他操作，比如记录访问日志。]]></description><category></category></item><item><title><![CDATA[算法练习第26天|46.全排列、47全排列II]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/139378260</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/139378260</guid><author>Brillian123</author><pubDate>Sat, 01 Jun 2024 20:52:13 +0800</pubDate><description><![CDATA[每层都是从0开始搜索而不是startIndex需要used数组记录path里都放了哪些元素了。]]></description><category></category></item><item><title><![CDATA[算法练习第25天|491. 非递减子序列]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/139375260</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/139375260</guid><author>Brillian123</author><pubDate>Sat, 01 Jun 2024 18:46:21 +0800</pubDate><description><![CDATA[491. 非递减子序列。]]></description><category></category></item><item><title><![CDATA[算法练习第24天|78.子集、 90.子集II]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/139049386</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/139049386</guid><author>Brillian123</author><pubDate>Sun, 19 May 2024 22:26:36 +0800</pubDate><description><![CDATA[78. 子集 - 力扣（LeetCode）]]></description><category></category></item><item><title><![CDATA[C++设计模式|结构型 适配器模式]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/139043598</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/139043598</guid><author>Brillian123</author><pubDate>Sun, 19 May 2024 17:26:39 +0800</pubDate><description><![CDATA[可以将⼀个类的接⼝转换成客户希望的另⼀个接⼝，主要⽬的是 充当两个不同接⼝之间的桥梁，使得原本接⼝不兼容的类能够⼀起⼯作。2. 适配器模式的组成（1）接口类，给客户端调用；（2）被适配者类；（3）适配器类。3.适配器模式的分类适配器模式一般分为类适配器模式和对象适配器模式。（1）：适配器类通过继承适配者类（多重继承），达到适配目的，部分语言可能不支持多重继承（如C#）。（2）：适配器类中存放适配者类的实例对象，调用它来达到适配目的，该模式较常用。下面的题目我们使用第二种类型来进行求解。]]></description><category></category></item><item><title><![CDATA[算法练习第23天|131.分割回文串、93.复原IP地址]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/139025343</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/139025343</guid><author>Brillian123</author><pubDate>Sat, 18 May 2024 19:22:25 +0800</pubDate><description><![CDATA[回溯函数除了参数除了需要字符串，还用到了老朋友result和path（也可以去掉，因为是全局的）。判断回文的函数有三个参数，字符串本身s，字符串起始位置start以及字符串末尾位置（最后一个字符的位置）。回溯第三步就是提取未探索区域的子串，然后判断子串是否为回文串 ，如果是，path记录，然后未探索区域进一步缩小，进行递归，回溯。我们在前面的文章中讲到，如果从一个集合中取组合就需要使用startIndex（见这篇博文39题的思路分析部分）。其实本题的切割问题也可以看作前面题目中从集合中取元素的问题。]]></description><category></category></item><item><title><![CDATA[算法练习第22天|39. 组合总和、40.组合总和II]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/138899798</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/138899798</guid><author>Brillian123</author><pubDate>Wed, 15 May 2024 18:29:40 +0800</pubDate><description><![CDATA[39. 组合总和39. 组合总和 - 力扣（LeetCode）]]></description><category></category></item><item><title><![CDATA[C++设计模式|创建型 5.原型模式]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/138867150</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/138867150</guid><author>Brillian123</author><pubDate>Tue, 14 May 2024 21:02:15 +0800</pubDate><description><![CDATA[原型模式⼀种创建型设计模式，该模式的核⼼思想是基于现有的对象创建新的对象，⽽不是从头开始创建。在原型模式中，通常有⼀个原型对象，它被⽤作创建新对象的模板。新对象通过复制原型对象的属性和状态来创 建，⽽⽆需知道具体的创建细节。2.为什么要使用原型模式？如果一个对象的创建过程比较复杂时（比如需要经过一系列的计算和资源消耗），那每次创建该对象都需要消耗资源，而通过原型模式就可以复制现有的一个对象来迅速创建/克隆一个新对象，不必关心具体的创建细节，可以降低对象创建的成本。]]></description><category></category></item><item><title><![CDATA[算法练习第21天|216.组合总和|||、17.电话号码的字母组合]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/138854121</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/138854121</guid><author>Brillian123</author><pubDate>Tue, 14 May 2024 16:32:22 +0800</pubDate><description><![CDATA[一般来说，回溯函数的返回值类型为void，至于参数，为了表达方便，我们定义了目标和targetSum（即题目中的n）、k、遍历到当前路径的和sum、以及每一层回溯的开始索引startIndex。index表示遍历到了digits的第几个数字，其初始值为0，遍历过一个数字后就会+1，那么当index等于digits.size（）时，表明遍历完毕。在[1,9]范围内使用4个不同的数字，我们可以得到的最小和是1+2+3+4 = 10，因为10 > 1，没有有效的组合。给出数字到字母的映射如下（与电话按键相同）。]]></description><category></category></item><item><title><![CDATA[C++设计模式|创建型 4.建造者模式]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/137968574</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/137968574</guid><author>Brillian123</author><pubDate>Fri, 19 Apr 2024 18:03:53 +0800</pubDate><description><![CDATA[建造者模式（也被成为生成器模式），是一种创建型设计模式，软件开发过程中有的时候需要创建很复杂的对象，而建造者模式的主要思想是将对象的构建过程分为多个步骤，并为每个步骤定义一个抽象的接口。具体的构建过程由实现了这些接口的具体建造者类来完成。同时有一个指导者类负责协调建造者的工作，按照一定的顺序或逻辑来执行构建步骤，最终生成产品。举个例子，假如我们要创建一个计算机对象，计算机由很多组件组成，例如 CPU、内存、硬盘、显卡等。每个组件可能有不同的型号、配置和制造，这个时候计算机就可以被视为一个复杂对象，构建过程相]]></description><category></category></item><item><title><![CDATA[算法练习第20天|回溯算法 77.组合问题 257. 二叉树的所有路径]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/137923450</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/137923450</guid><author>Brillian123</author><pubDate>Thu, 18 Apr 2024 21:40:15 +0800</pubDate><description><![CDATA[回溯法也可以叫做回溯搜索法，它是一种搜索的方式。其本质是穷举，穷举所有可能，然后选出我们想要的答案。2.为什么要有回溯算法?那么既然回溯法并不高效为什么还要用它呢？因为有的问题能暴力搜出来就不错了，撑死了再剪枝一下，还没有更高效的解法。组合问题：N个数里面按一定规则找出k个数的集合切割问题：一个字符串按一定规则有几种切割方式子集问题：一个N个数的集合里有多少符合条件的子集排列问题：N个数按一定规则全排列，有几种排列方式棋盘问题：N皇后，解数独等等。]]></description><category></category></item><item><title><![CDATA[C++设计模式|创建型 3.抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/137885113</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/137885113</guid><author>Brillian123</author><pubDate>Wed, 17 Apr 2024 20:27:48 +0800</pubDate><description><![CDATA[在上一篇文章中介绍了，每个具体工厂负责生产一个专门的产品，其代码扩展性很好，这篇文章将介绍抽象工厂模式。]]></description><category></category></item><item><title><![CDATA[算法练习第19天|222.完全二叉树的节点个数]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/137869543</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/137869543</guid><author>Brillian123</author><pubDate>Wed, 17 Apr 2024 14:27:38 +0800</pubDate><description><![CDATA[222. 完全二叉树的节点个数 - 力扣（LeetCode）]]></description><category></category></item><item><title><![CDATA[算法练习第18天|111.二叉树的最小深度]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/137839600</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/137839600</guid><author>Brillian123</author><pubDate>Tue, 16 Apr 2024 21:47:21 +0800</pubDate><description><![CDATA[111. 二叉树的最小深度 - 力扣（LeetCode）]]></description><category></category></item><item><title><![CDATA[算法练习第17天|104.二叉树的最大深度 、559.N叉树的最大深度]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/137836974</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/137836974</guid><author>Brillian123</author><pubDate>Tue, 16 Apr 2024 20:11:22 +0800</pubDate><description><![CDATA[二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。最大深度==二叉树的层数==根节点的深度==根节点的高度==第二层节点的最大高度+1。二叉树某个节点的深度：指从根节点到该节点的最长简单路径边的条数。二叉树某个节点的高度：指从该节点到叶子节点的最长简单路径边的条数。]]></description><category></category></item><item><title><![CDATA[C++设计模式|创建型 2.工厂模式]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/137831016</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/137831016</guid><author>Brillian123</author><pubDate>Tue, 16 Apr 2024 19:19:06 +0800</pubDate><description><![CDATA[简单工厂的思想中只有一个工厂类，用于创建所有的产品，如果需要添加新的产品，就需要修改工厂类的代码。而工厂模式引入了抽象工厂和具体工厂的概念，每个具体工厂只负责创建一个具体产品，添加新产品时只需要添加新的工厂类，支持扩展，复合开闭原则。一个接口，包含一个抽象的工厂方法，该方法用于创建产品对象。具体工厂：实现抽象工厂接口，创建具体的产品。抽象产品类：定义产品的接口。具体产品类：实现抽象产品接口，是工厂创建的对象。工厂模式的示意图如下图所示，实际的生产系统所管理的是对应的工厂，工厂负责产品的生产。]]></description><category></category></item><item><title><![CDATA[算法练习第16天|101. 对称二叉树]]></title><link>https://blog.youkuaiyun.com/Brillian123/article/details/137695525</link><guid>https://blog.youkuaiyun.com/Brillian123/article/details/137695525</guid><author>Brillian123</author><pubDate>Fri, 12 Apr 2024 22:37:36 +0800</pubDate><description><![CDATA[力扣链接题目描述：给你一个二叉树的根节点root， 检查它是否轴对称。truefalse思路分析：对于二叉树是否对称，要比较的是是不是相互翻转的，而不是比较左右子节点。所以在递归遍历的过程中，。要比较子树的外侧与内侧。]]></description><category></category></item></channel></rss>