yrrej0
码龄4年
关注
提问 私信
  • 博客:18,291
    社区:1
    18,292
    总访问量
  • 63
    原创
  • 841,645
    排名
  • 7
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:澳大利亚
  • 加入CSDN时间: 2020-12-01
博客简介:

weixin_53153619的博客

查看详细资料
个人成就
  • 获得3次点赞
  • 内容获得3次评论
  • 获得0次收藏
创作历程
  • 28篇
    2023年
  • 35篇
    2022年
成就勋章
TA的专栏
  • leetcode
    13篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

代码随香录day31

以for循环去遍历孩子数组,index代表饼干数组最大尺寸的饼干,如果当前s[index] >=g[i]的话,那么饼干数组就继续往前走,并且孩子数组也在往前遍历。这里的思路就是用尺寸最大的蛋糕 优先满足胃口最大的孩子 为了避免尺寸浪费。所以这里分别对孩子数组和饼干数组进行排序,然后倒序遍历。思路:这道题啊 不太会。今天开始贪心算法了!
原创
发布博客 2023.07.30 ·
404 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day28

对path路径进行判断是否为空,如果不为空,那就同时判断上一次的元素也就是path[-1]是否大于我们当前的元素,如果上一个元素大于当前元素,或者当前元素已经在我们的used_set中了,那么久continue。当我们的收获到的path的长度已经和nums的长度一样了,说明我们完全遍历完了,也就是该收获的时候了,所以加入结果集然后return。和上一个题不一样的是,nums数组中出现了重复的元素,并且我们的输出结果中,也有重复的元素,但是要求返回不重复的排列。实际上在这一层他是已经使用过的。
原创
发布博客 2023.07.26 ·
307 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day28

循环终止条件:当index>nums的长度的时候,说明所有元素被遍历过了 就要退出了。其实子集也是一种组合问题,因为它的集合是无序的,子集{1,2} 和 子集{2,1}是一样的。中依旧讲解组合总和问题,本题集合元素会有重复,但要求解集不能包含重复的组合。思路:这道题和之前的回溯有相同的地方,不同点就在于元素是不重复的。如果把 子集问题、组合问题、分割问题都抽象为一棵树的话,有同学问了,什么时候for可以从0开始呢?求排列问题的时候,就要从0开始。
原创
发布博客 2023.07.25 ·
326 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day25

这道题的思路和我们之前做的一样,不过唯一不同的地方就是可以不在意答案元素内是否有重复的元素,之前我们的startindex是从i+1开始每次递归,那么这里既然元素可以取多次,那么我们的下次递归依旧是从i开始,就不是i+1了。我们转化为树形结构来看,有两个维度,一个是树的同一层,另一个是树的分支,也就是说树的分是可以取重复的,但是在树的同一层中,之前用过的就不能再用第二次了。思路:本题核心难度在于 数组内的元素可以重复,但是数组是不能重复的,比如[1,7]和[7,1]只能取一个。
原创
发布博客 2023.07.24 ·
231 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day25

如果当前的path已经达到了k的长度,但是不满足和等于n,那么就pop出来并且减掉当前的元素。单层循环逻辑:首先找到当前要遍历digits中字母的位置,也就是map[digits[index]],index从0开始,获取到了第一个数字 然后再map中找到了这个数字映射的字母。树的深度就是当前digits的长度,而最后的叶子节点就是我们要收集的结果,那么回溯出现在哪里呢?然后开始递归下一层,这里递归了之后是需要返回到上一层的,也就是s = s[:-1],这个就代表我们回溯到上一层的字母。
原创
发布博客 2023.07.22 ·
164 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day23

第一次取1,集合变为2,3,4 ,因为k为2,我们只需要再取一个数就可以了,分别取2,3,4,得到集合[1,2] [1,3] [1,4],以此类推。单程循环逻辑:回溯法的搜索过程就是一个树型结构的遍历过程,在如下图中,可以看出for循环用来横向遍历,递归的过程是纵向遍历。回溯法是一种搜索的方式,常常与递归一起,如果某个程序写了递归,那么往往就缺少不了回溯。,是的,我指的是所有回溯法的问题都可以抽象为树形结构!可以看出这个棵树,一开始集合是 1,2,3,4,,[1,2],[2,1]这就是两种排列方式。
原创
发布博客 2023.07.21 ·
65 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

day23代码随香录

这是一个特例,当发现0不符合我们的范围区间的时候,不能直接return none,还要去考虑0的右子树,这里可以直接将0的右子树赋值给3的左子树,所以这就是涉及一个二叉树的重构过程。如果root(当前节点)的元素小于low的数值,那么应该递归右子树,并返回右子树符合条件的头结点。如果root(当前节点)的元素大于high的,那么应该递归左子树,并返回左子树符合条件的头结点。接着划分区间,root的左孩子接住下一层左区间的构造节点,右孩子接住下一层右区间构造的节点。都提到了,这是常用的操作手段。
原创
发布博客 2023.07.20 ·
147 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随香录day21

本题目涉及到一个二叉搜索树树的插入操作,如果当root等于none的时候,实际上我们这里就要开始插入操作了,因为我们对二叉搜索树的特性有了解,如果这个val<根节点的话,它一定会被插到左子树中去,所以当root等于none的时候,也就是这个节点应该放的位置, 这 里直接return treenode(val)就可以了。如果pq两个节点都小于root,那么最近公共祖肯定是在他的左子树,如果都大于那么,肯定就在右子树。思路:这道题吧 面试如果考这个 我就直接g了。卡哥给的动画 直接秒懂!
原创
发布博客 2023.07.19 ·
1175 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day21

思路:这里再再再次强调!遍历二叉搜索树即为遍历有序数组!那么这个问题就转化成了 递增数组中找出 出现频率最多次数的元素!既然与元素出现次数相关 那就再用一个哈希表来记录即可!思路:记住二叉搜索树的特性,中序遍历是有序数组,所以我们直接对树做一次中序遍历,然后对数组中的node进行一次循环遍历不断获取最小值就行了,这里需要创建一个max_value拿来作比较。对于中序遍历这里就不多阐述了,奥这里我踩了好几次的坑,就是我们储存遍历的数组应该定义在主函数中,不然每次遍历都是空数组。(即,出现频率最高的元素)。
原创
发布博客 2023.07.18 ·
260 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day20

这里重复用了tree1去构造新的二叉树,所以最后直接返回tree1就好了,然后就是合并之后继续递归当前的节点的左子树和tree2当前节点的左子树(注意 他们是同步进行操作的,并不是异步)可能有朋友问 你怎么知道tree1遍历到当前节点的时候,tree2刚好也在这个位置呢?这里为什么要去判断index是不是大于0,经过刚才我的实验,我认为是如果我们的最大值在第一个元素也就是index= 0的时候,我们的左子树目前是不能构成的,那么就直接先构建右子树。同理,当前节点的右子树也是递归。
原创
发布博客 2023.07.17 ·
172 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day18

思路:其实这道题我看到的第一想法就是层序遍历去解决,然后直到查找到最后一层,直接返回左节点,但是这里有一个小坑,这里不单单是只左边节点,而指的是 最靠近左侧。这里要先定义一个depth,去记录当前的层次,max_depth去记录上一层次,如果depth>max_depth,那么我们就更新depth。这里我更喜欢去做减法,当经过一个node,就对应的减去当前节点的值,这里需要用到回溯,如果已经到了叶子节点,然后当前路径和并不满足target,那么就要返回上一层去访问其他子树,也就是要把当前减掉的值加回来。
原创
发布博客 2023.07.16 ·
267 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day17

这是左边的路径保存起来之后,这里就是当我们的左右孩子都为空的时候,说明当前这条路径就已经判断完了,然后就要回到上一个节点,去看他还有没有其他的路径可以继续走,如果还是没有,那么就继续返回上一个节点,直到有新的路径出现为止。那么对于这道题来说,既然是求高度,那么我们就选择后序遍历的方式,逐渐向上返回子树的高度。可以用-1来标识以当前节点为根节点的左右子树是否为平衡二叉树,如果在过程中有一棵子树的返回值是-1,那么整个树必然不是一个平衡二叉树,如果没有返回-1,那么就正常返回当前树的高度就可以了。
原创
发布博客 2023.07.14 ·
241 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随香录day16

单层递归逻辑:分别向node的左子树和右子树进行递归,定义left和right接受返回值。不过这里会多几个判断条件,定义left&right去接受左子树和右子树的高度之后。单层递归:就是当前node的左孩子和右孩子。思路:这道题依旧是是用层序遍历的方式,不得不说层序遍历真的很好用!终止条件:当当前node为空时候。终止条件:当node为空时返回0。递归参数:root就足够了。思路:这道题推荐用层序遍历递归的方式。判断当前root的左右子树是否为空。这也是这道题的核心部分。
原创
发布博客 2023.07.13 ·
313 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day15

这里如果使用递归法会更好的理解,当我们储存每一层的答案数组的长度等于当前的level层数,说明我们这一层的节点都已经遍历完了,然后我们的下一次递归的level可以直接+1。思路:这道题可以用前序或者后序遍历的方式来做,中间插入一个交换左右节点的过程就可以了。递归参数:level代表当前是第几层次,levels代表每一层的节点集合,node也就是咱们的节点。单层循环罗杰:当我们交换完左右节点之后,就按照正常的前序或者后序的顺序来做。递归终止条件:当node为None的时候,说明没有元素了,那么直接终止。
原创
发布博客 2023.07.12 ·
98 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day14

在遍历左、右子树时,仍然先访问根节点,然后遍历左子树,最后遍历右子树。若二叉树为空则结束返回,否则:(1)访问根结点。(2)前序遍历左子树。
原创
发布博客 2023.07.11 ·
198 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

昨日休息!今天是代码随香录day13

push:这个push函数是为了构建队列的顺序,也就是说当我每次push进一个新的元素,我就用这个元素和队列中的尾部元素进行判断,如果当前元素大于队列尾部,那么就把队列中的元素pop掉,直到当前这个元素<队列的尾部元素。pop:这个pop函数是为了检测,当我新加入的元素如果等于我队列中的头部元素,那么说明我当前窗口中的最大值已经被获取过了,我的窗口要往后移动了,那么就把当前这个头部元素pop掉。如果是大顶堆,那么最大的元素就在头部,那么当pop的时候,也就把最高频次的元素给丢掉了。
原创
发布博客 2023.07.10 ·
203 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day11

当我们判断当前元素如果是算法运算符号,我们就用一个result去记录栈中上两个数字的对应的算法操作符,比如当前是+,那么我们的result = stack[-1] + stack[-2].这里+和*都是按照这个顺序,但是当我们碰到-和/的时候,这里是用stack[-2] - stack[-1] 或者是stack[-2]/stack[-1].如果说当前元素不在栈中,那么我们就入栈,如果在栈中,我们需要同时判断当前元素是不是栈的最后一个元素,也就是我们上次加入的元素。
原创
发布博客 2023.07.08 ·
156 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day10

这里使用一个主进栈队列和一个 辅助队列进行后入先出操作。将入队的元素放入queue2中,然后queue1&2进行互换。这里有一个小细节,循环这里不包括最后一个元素,不然你直接交换就没什么区别了。思路:用两个list去模拟栈的操作,一个入栈list,一个出栈list. 并且了解栈的操作,pop,peek,push.
原创
发布博客 2023.07.07 ·
260 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day9

都要用到kmp算法了 还居然是简单难度!
原创
发布博客 2023.07.06 ·
148 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代码随想录day8

注意一下 如果是两个连续的空格 那么是不能加入的,这里怎么判断是不是连续空格,就用我们上次添加的元素来看 if result[-1]==' ',如果不是,那么说明这个空格只出现了一次 就可以加入。如果是,那么这个就是连续的空格,我们不进行加入直接跳过。题目比较简单,这里用双指针的方法,注意下这里left
原创
发布博客 2023.07.05 ·
235 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多