<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ostarjennyo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ostarjennyo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ostarjennyo]]></copyright><item><title><![CDATA[滑动窗口-3（To be continued）]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/137651757</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/137651757</guid><author>ostarjennyo</author><pubDate>Thu, 11 Apr 2024 21:49:31 +0800</pubDate><description><![CDATA[确定同向双指针 left=0, right=0进窗口 将right指针指向的数据纳入计算范围判断出窗口 将left指针指向的数据从计算结果中删除。]]></description><category></category></item><item><title><![CDATA[C# 格式化输出]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/134048307</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/134048307</guid><author>ostarjennyo</author><pubDate>Thu, 26 Oct 2023 09:23:08 +0800</pubDate><description><![CDATA[具体而言，`num.ToString("N4")` 使用标准的数字格式化字符串 `"N4"`，这告诉 `ToString` 方法将数字格式化为包含逗号分隔符的格式，并保留小数点后的四位数字。在这个字符串中，`{0}` 表示第一个参数，即 `(long)num`，而 `{1}` 表示第二个参数，即 `(num - (long)num) * 10000`，即小数部分乘以 10000。2. `(long)num`: 这部分 `(long)num` 是用来获取 `num` 的整数部分的，即去掉小数部分。]]></description><category></category></item><item><title><![CDATA[代码随想录 DAY28 93.复原IP地址 78.子集 90.子集II]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131920648</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131920648</guid><author>ostarjennyo</author><pubDate>Tue, 25 Jul 2023 17:01:51 +0800</pubDate><description><![CDATA[如果最后一小节符合要求，就将该字符串添加到结果集中。切割字符串，并且在每一个切割过的字符串后面加上 ‘ .’循环中：从start到i 符合要求，就继续添加逗点和字符。子集重复就是数字重复，和上一级递归的数字比较是否使用过。不符合下面就不用看了。不要试图一下找完，从第一个开始算。只是判断生成的子集是否重复。返回条件：逗点个数==3。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY 27 39. 组合总和 40.组合总和II 131.分割回文串]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131912468</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131912468</guid><author>ostarjennyo</author><pubDate>Tue, 25 Jul 2023 15:20:56 +0800</pubDate><description><![CDATA[和上题一样都是在原来的字符串（数组）中判断是否为回文数（相似）判断上一个不能与下一个要加入的数字相同。是否和滑动窗口有些相似？]]></description><category></category></item><item><title><![CDATA[代码随想录 DAY25 216.组合总和III 17.电话号码的字母组合]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131895086</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131895086</guid><author>ostarjennyo</author><pubDate>Mon, 24 Jul 2023 15:59:04 +0800</pubDate><description><![CDATA[和77的写法一样，只不过多加了一个判断条件。只是将数字的组合转换为数字代表的字母组合。1、sum>n 不用继续递归了。2、path中的个数超出k。也只是改结束条件和回溯范围。17.电话号码的字母组合。216.组合总和III。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY 24 回溯算法 77. 组合]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131894775</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131894775</guid><author>ostarjennyo</author><pubDate>Mon, 24 Jul 2023 14:04:07 +0800</pubDate><description><![CDATA[参数start：path里的第二个数从哪一个开始。结束条件：path里面已经达到要求个数。回溯算法可解决树形问题。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY23 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131886623</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131886623</guid><author>ostarjennyo</author><pubDate>Mon, 24 Jul 2023 11:15:21 +0800</pubDate><description><![CDATA[对于递归思想和二叉搜素树的理解递归直接返回上一级非递归写法找到合理的范围，root 的子树就存在不符合条件的，修剪root的子树。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY22 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131871378</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131871378</guid><author>ostarjennyo</author><pubDate>Sun, 23 Jul 2023 23:35:18 +0800</pubDate><description><![CDATA[缩小范围，找到最近的公共祖先，判断两个指定节点的值是否同时大于/小于子树的值。就是在二叉树中找到合适的位置。二叉树的特性是有序==可以依照数值判断节点在哪里。下面这两题让我想起来了当初学二叉搜索树调整的日子。2、删除正在访问的节点，递归返回值连接上双亲结点。递归就是把非递归中的while循环部分拆开来写。235. 二叉搜索树的最近公共祖先。如果根节点为空，就证明没找到，返回空。不能缩小范围，就证明已经找到了最近的。450.删除二叉搜索树中的节点。3、删除的五种情况，五种返回值。被迭代法感动得痛哭流涕。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY21 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131869099</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131869099</guid><author>ostarjennyo</author><pubDate>Sat, 22 Jul 2023 18:40:47 +0800</pubDate><description><![CDATA[首先遍历树，将树的节点去重放进unordered_map里，key（first）放节点值，value（second）放节点出现的次数。map是按照key排序，在这里key 就存节点出现次数，但是未遍历完出现次数不确定。中序遍历二叉搜索树，后一个节点值减去前一个节点值的最小结果。先找到一个节点，再找到另一个节点，然后返回他们的根节点。注意if 的顺序，为什么要这样？最后，将出现次数最大的值放入结果集。二叉搜索树的遍历框架几乎都是一样的。530.二叉搜索树的最小绝对差。普通的树，未使用二叉搜索树的特性。]]></description><category></category></item><item><title><![CDATA[代码随想录 DAY20 654. 最大二叉树 617.合并二叉树 700. 二叉搜索树中的搜索 98.验证二叉搜索树]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131866923</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131866923</guid><author>ostarjennyo</author><pubDate>Sat, 22 Jul 2023 16:05:05 +0800</pubDate><description><![CDATA[二叉搜索树中序遍历得到一个有序序列，只需要比较前一个节点值是否小于后一个节点值。这道题和之前写的（105. 从前序与中序遍历序列构造二叉树）是一个原理。题意：从一个数组里面找最大值当作树的根，左边是左子树，右边是右子树。因为二叉搜索树的有序性，直接确定了我们下一步要去哪一个方向去寻找它。前一个节点即为左子树的最右节点（左子树中序遍历的最后一个节点）只要有一个树为空，就不用考虑他，只看另一个就行了。注意root1与root2为空的情况。比根节点值大的是右节点。比根节点值小的是左节点。注意判断树节点是否为空。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY18 513.找树左下角的值112. 路径总和 113. 路径总和ii 106. 从中序与后序遍历序列构造二叉树105. 从前序与中序遍历序列构造二叉树]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131813663</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131813663</guid><author>ostarjennyo</author><pubDate>Wed, 19 Jul 2023 22:06:04 +0800</pubDate><description><![CDATA[走到叶子节点&&得到相应总值 返回ture。若走到叶子节点但没有得到相应总值 返回false。首先减去根节点的左子树值，判断其左子树是否符合条件（即再次进入递归）符合条件 返回true。使用层序遍历，因为层序遍历使用的时队列，所以头部的元素（i==0）是最左侧的。不符合条件 根节点的值恢复原样（就当没来过左子树）中序遍历找出左右子树的节点数，分割后序遍历。就是遍历，遍历过程中记录路径之和。为什么写成private?后序遍历确定根节点，分割中序遍历。目标节点的根节点（上一个节点）若不是叶子节点，继续递归。]]></description><category></category></item><item><title><![CDATA[代码随想录 DAY 17 110. 平衡二叉树 257. 二叉树的所有路径 404.左叶子之和]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131742703</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131742703</guid><author>ostarjennyo</author><pubDate>Wed, 19 Jul 2023 17:10:24 +0800</pubDate><description><![CDATA[左叶子的根节点才可以判断出来是左叶子。找到所有的左叶子，左叶子的存在条件。最大深度+判断左右子树深度之差。257. 二叉树的所有路径。递归方法就是换一种方式遍历。1、添加  “->” 符号。2、终止条件，找到叶子节点。当走到左叶子的根节点时相加。110. 平衡二叉树。类似找叶子节点的写法。]]></description><category></category></item><item><title><![CDATA[代码随想录 DAY 16 104 二叉树的深度111. 最小深度222. 完全二叉树的节点个数]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131742022</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131742022</guid><author>ostarjennyo</author><pubDate>Sat, 15 Jul 2023 18:05:57 +0800</pubDate><description><![CDATA[和最大深度不一样，这个要考虑只有做、右子树的情况。同层序遍历，只不过是当找第一个到叶子节点时返回。222. 完全二叉树的节点个数。根节点+左右子树深度的最大值。104 二叉树的深度。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY15 102. 二叉树的层序遍历 226. 翻转二叉树 101. 对称二叉树]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131727875</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131727875</guid><author>ostarjennyo</author><pubDate>Fri, 14 Jul 2023 21:45:58 +0800</pubDate><description><![CDATA[这个队列只保留每一层的节点，当访问一个节点后，pop出去，将它的孩子节点全部加入到队列里。非叶子对称：左右叶子的数值相等 && 左右子树也是对称的（在这里递归）叶子对称：左右子树都为空，其他都是不对称。重点：要控制每个访问的节点都不能是空节点。因为是按照进入的顺序出去，比较容易想。子树对称，子树的子树也要对称。102. 二叉树的层序遍历。决定访问的次序是输入的次序。递归就正常交换左右子树。在遍历的时候反转就行了。226. 翻转二叉树。101. 对称二叉树。]]></description><category></category></item><item><title><![CDATA[代买随想录DAY14 二叉树的递归遍历 迭代遍历 统一写法（先序遍历、中序遍历、后序遍历）]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131691625</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131691625</guid><author>ostarjennyo</author><pubDate>Fri, 14 Jul 2023 16:32:23 +0800</pubDate><description><![CDATA[根节点先进入栈，保留根节点的左右子树，右子树先进入，左子树再进入。后序遍历只需要反转一下结果就行了，但中序遍历不是这样。三种递归遍历只是进入结果集的顺序不一样，其他都一样。中序遍历需要一直找到最左端的节点，再访问中根节点。栈保持了出入的顺序一致，而队列不能保证此种效果。设置标志位，在要输出的节点后添加一个空节点。遇到非空节点，还需要继续向寻找节点。无论前中后序，变化的都是进入栈的顺序。遇到空节点，证明已经到达目标节点。结果集必须保持不变，使用&当节点为空时返回退出。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY11 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131643070</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131643070</guid><author>ostarjennyo</author><pubDate>Wed, 12 Jul 2023 21:50:45 +0800</pubDate><description><![CDATA[先讲一下我在自己的写法，好麻烦。我不太理解string 是否可以自己运算，和类型转换的一些知识，所以我打算把每一个string转化成为int 数据（自己写了一个string 转int 的函数）。先理解题目：有效的括号是指当遇见一个）或] 或}时都有相应的前半个括号匹配。2、没有对应的左括号：栈为空（第一个就是右括号）栈不为空，但括号类型不对。这道题要求的是临近的半个括号匹配，需要用到栈的后进先出的特点。3、没有对应的右括号：栈一定不为空，括号类型不对。很多时候吧，大思路都是对的，但是具体实现是错的。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY13 239. 滑动窗口最大值 347. 前 K 个高频元素]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131687187</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131687187</guid><author>ostarjennyo</author><pubDate>Wed, 12 Jul 2023 21:46:57 +0800</pubDate><description><![CDATA[push：若入口（back）元素小于将要进入的元素（value），则不断弹出入口元素（pop_back）直到为空或入口元素大于value。pop：当数值==出口（front）元素时，弹出出口元素（pop_front）。在这个方法中使用deque重新写了一个类myqueue 代替暴力中的第二个for循环。首先要得到每一个数据的出现次数，将他们集合在unordered_map里面。使用小堆，就建一个大小为k的小堆，如果出现次数大于堆顶数据就进堆。将所有元素都放到map里面，key放值，value放出现的次数。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY10 232. 用栈实现队列 ​ 225. 用队列实现栈​]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131635377</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131635377</guid><author>ostarjennyo</author><pubDate>Mon, 10 Jul 2023 14:56:15 +0800</pubDate><description><![CDATA[MyQueue 初始化一个栈，因为在类里已经写了设计两个栈stIn和stOut所以在此函数中可以什么都不写。大多数的题都是在考这两个特性。但是怎样在抽象题目中使用栈和队列我还不清楚。pop 先从stIn出来全部导入stOut之中12345->1 5432。peek同pop函数只是不删除stOut中的栈顶元素。我的这种方法只是保持了一个栈始终为空，但是有些复杂了。将stOut中的数据导入stIn里。之后pop出stIn。这种写法是将另一个栈也当作存储数据的。empty两个栈都得为空。stIn永远是队列尾部。]]></description><category></category></item><item><title><![CDATA[代码随想录DAY6 242. 有效的字母异位词 ​​​​​​349. 两个数组的交集​ ​ 202. 快乐数 ​1. 两数之和​]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131540912</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131540912</guid><author>ostarjennyo</author><pubDate>Wed, 05 Jul 2023 16:22:01 +0800</pubDate><description><![CDATA[那么判断元素是否出现，这个元素就要作为key（类似数据库中主键，用来查找），所以数组中的元素作为key，有key对应的就是value（就是值，key附带的），value用来存下标。我直接将全部的元素都加入map里了，但是find只能查一次，他总是找到最先查找到的那个。接着遍历第二个字符串，更改刚才的arr数组，只不过这次是（- -），若两个字符串相等，arr应该还是初始状态（都是0）创建一个数组arr，以下标代表字符串中的字母，解引用就是字幕出现的次数。哈希表有三种：数组、set（集合），map（映射）]]></description><category></category></item><item><title><![CDATA[代码随想录DAY4]]></title><link>https://blog.youkuaiyun.com/ostarjennyo/article/details/131513116</link><guid>https://blog.youkuaiyun.com/ostarjennyo/article/details/131513116</guid><author>ostarjennyo</author><pubDate>Tue, 04 Jul 2023 15:58:30 +0800</pubDate><description><![CDATA[找入口：meet指针（快慢指针相遇的地方）和起始指针（头指针）一起走，相遇的地方就是环的入口。第一遍写，没有写头节点，在输入[1], 1时报错了，不能删除，在第三部分加补丁之后结果误删。2、只是两两交换了，当第三个指针移动的时候就会找不到（因为只固定了正在交换的两个指针）挺简单的一道题，和上面那道的思路是一样的，只不过这一题不用空指针。还是长度不一致（快慢指针）判断两个链表相交条件（a==b）的问题。当交换链表中两个结点时，一定需要知道两个节点之前的点。第二遍写，加上了头节点，其他地方几乎不变，成了。]]></description><category></category></item></channel></rss>