自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 c++入门99题61-70

剑指 Offer II 098. 路径的数目这题可以使用动态规划来解决,按照如下几个步骤:设计状态->写出状态转移方程->设定初始状态->执行状态转移->返回结果;LCP 06. 拿硬币不论一共有几个都可以直接用个数除以二然后向上取整。2278. 字母在字符串中的百分比注意变量要初始化。1018. 可被 5 整除的二进制前缀这里有一个小技巧, sum 在判断过程中不断的模除 5 就可以防止 sum 的值过大。剑指 Offer 10- I. 斐波那契数列这题如果直接使用递归是会超时的,可以使用动态规

2022-08-01 19:32:51 206 1

原创 c++入门99题51-60

为最小的,那么如果要求返回的申请数是最近3000ms内的,只需要将最新申请的时间与队首的元素进行比较,如果差小于3000ms就可以直接将新的申请入队然后返回队列长度也就是申请数,否则不断出队队首元素直到队首元素与。时,首先将元素入队,然后队列内元素总和加上入队的值,接下来再对队列的长度进行判断,如果队列的长度已经超过窗口长度了,那就先使得总和。来记录需要返回的下标,然后此时二分的作用变为了不断的缩小范围,当。和上一道题是一样的,不过这里最终返回的下标要全都加一。因此队首的元素就是最早进入的,也就是。...

2022-08-01 16:35:18 337

原创 回溯算法笔记

给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。你可以按任何顺序返回答案。给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。你可以按任意顺序返回这些组合。candidates中的同一个数字可以无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。...

2022-07-30 21:09:47 1514

原创 《七月集训》第二十八日——动态规划

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。

2022-07-28 20:01:29 251 1

原创 《七月集训》第二十二日——有序集合

给你一个数组orders,表示客户在餐厅中完成的订单,确切地说,orders[i]=[customerNamei,tableNumberi,foodItemi],其中customerNamei是客户的姓名,tableNumberi是客户所在餐桌的桌号,而foodItemi是客户点的餐品名称。请你返回该餐厅的点菜展示表。在这张表中,表中第一行为标题,其第一列为餐桌桌号“Table”,后面每一列都是按字母顺序排列的餐品名称。...

2022-07-28 19:30:38 169

原创 c++入门99题41-50

对y操作同理,即不论对x还是y进行操作都会使得x+y的值翻倍,因此不需要对其进行遍历。法二不论是对于x进行操作还是对于y操作,(这里假设对x进行操作。因为只有一组解,所以可以直接使用双指针进行遍历。只需检测每一行的第二个位置是什么符号即可。对字符串进行预处理后直接使用双指针遍历。遍历原字符串,然后在空格的时候填入。排序,比较相邻,结束。...

2022-07-28 12:22:03 161

原创 《七月集训》第二十一日——堆(优先队列)

现有一个包含所有正整数的集合[1,2,3,4,5,…]。SmallestInfiniteSet()初始化SmallestInfiniteSet对象以包含所有正整数。intpopSmallest()移除并返回该无限集中的最小整数。voidaddBack(intnum)如果正整数num不存在于无限集中,则将一个num添加到该无限集中。...

2022-07-27 21:16:23 148

原创 《七月集训》第二十日——二叉搜索树

给定二叉搜索树的根结点root,返回值位于范围[low,high]之间的所有结点的值的和。给定一个二叉搜索树,请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。给出二叉搜索树的根节点,该树的节点值各不相同,请你将其转换为累加树(GreaterSumTree),使每个节点node的新值等于原树中大于或等于node.val的值之和。给定一个二叉搜索树root(BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。...

2022-07-27 21:03:00 223

原创 《七月集训》第十九日——树

给定一个二叉树的root,确定它是否是一个完全二叉树。在一个完全二叉树中,除了最后一个关卡外,所有关卡都是完全被填满的,并且最后一个关卡中的所有节点都是尽可能靠左的。它可以包含1到2h节点之间的最后一级h。输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构,即A中有出现和B相同的结构和节点值。例如给定的树A3/\45/\12给定的树B4/1。...

2022-07-26 21:13:54 142 1

原创 c++入门99题31-40

要注意的一点就是符号在字符串中要另外输出,此外,是末位先加入到字符串中,因此要翻转一下。每次取模就可以得到当前最小位的数,之后再除去进制数就可以得到去掉了一位的数。这题算是作为积累了,学到了很多string的用法。简单二维数组遍历,积累了二维数组的容量取法。直接按照题目要求将元素填入ans即可。这题暴力会超时,所以逐行二分。暂且使用遍历的方式实现。...

2022-07-26 20:37:35 234 1

原创 c++入门99题21-30

其实这题和上一题是一样的,翻转只需要翻转不同的位即可。直接将原来的元素按顺序在往原数组的后面填入就可以了。计算一位就右移一位,使用&来判断是否当前位为。使用了一堆的判断进行处理,不过效率还可以。string类确实比char数组好用多了。仍然同上,先异或两个数然后再求位。使用位与来消除最末位的。...

2022-07-26 15:11:23 180

原创 c++入门99题11-20

这道题让我对递归有了新的认识,同时这里调用函数时要注意,这里不可以使用。如果使用三元是白给题,不使用任何比较符号的话暂时还解不出来。这里使用了一个取模运算实现了类似循环队列的效果。来递归,会使得递归执行次数多非常非常多。异或的性质,任何一个数异或上自己都等于。只要将原来的数异或上与之位数相同的。其实就是统计原来的数字中有没有尾。直接上等差数列求和公式就可以了。ascii码的简单应用。,而任何一个数异或上。(除去0本身以外)。按题目要求实现即可。...

2022-07-26 14:18:30 166

原创 c++入门99题第1-10

的幂的数首先肯定能被整除,其次当其不断除去。的,而且其写为二进制之后有如下的形式。的形式,那么两数位与之后必然等于。的幂次方必然满足这个数是大于。类,实际上可以直接使用位运算。之后,最终一定会等于。先暂且使用库函数实现。注意数据溢出的问题,二分快速幂日后学习。...

2022-07-26 13:38:41 367

原创 《七月集训》第十八日——二叉树

给你一棵二叉树,它的根为root。请你删除1条边,使二叉树分裂成两棵子树,且它们子树和的乘积尽可能大。由于答案可能会很大,请你将结果对10^9+7取模后再返回。

2022-07-25 21:35:04 167 1

原创 《七月集训》第十七日——广度优先搜索

给你一个整数n,表示一张无向图中有n个节点,编号为0到n-1。同时给你一个二维整数数组edges,其中edges[i]=[ai,bi]表示节点ai和bi之间有一条无向边。请你返回无法互相到达的不同点对数目。

2022-07-24 23:12:57 112

原创 《七月集训》第十六日——队列(其实是动态规划)

在第1天,有一个人发现了一个秘密。给你一个整数delay,表示每个人会在发现秘密后的delay天之后,每天给一个新的人分享秘密。同时给你一个整数forget,表示每个人在发现秘密forget天之后会忘记这个秘密。一个人不能在忘记秘密那一天及之后的日子里分享秘密。给你一个整数n,请你返回在第n天结束时,知道秘密的人数。由于答案可能会很大,请你将结果对109+7取余后返回。...

2022-07-23 22:17:20 262 1

原创 《七月集训》第十五日——深度优先搜索

给你一棵完整二叉树的根,这棵树有以下特征叶子节点要么值为0要么值为1,其中0表示False,1表示True。非叶子节点要么值为2要么值为3,其中2表示逻辑或OR,3表示逻辑与AND。计算一个节点的值方式如下如果节点是个叶子节点,那么节点的值为它本身,即True或者False。否则,计算两个孩子的节点值,然后将该节点的运算符对两个孩子值进行运算。返回根节点root的布尔运算值。...

2022-07-22 21:38:30 303

原创 《七月集训》第十四日——栈

如果字符串满足以下条件之一,则可以称之为有效括号字符串(validparenthesesstring,可以简写为VPS)字符串是一个空字符串“”,或者是一个不为“(”或“)”的单字符。字符串可以写为AB(A与B字符串连接),其中A和B都是有效括号字符串。字符串可以写为(A),其中A是一个有效括号字符串。类似地,可以定义任何有效括号字符串S的嵌套深度depth(S)输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。...

2022-07-21 22:37:25 122

原创 《七月集训》第十三日——双向链表

请你设计一个带光标的文本编辑器,它可以实现以下功能添加在光标所在处添加文本。删除在光标所在处删除文本(模拟键盘的删除键)。移动将光标往左或者往右移动。当删除文本时,只有光标左边的字符会被删除。光标会留在文本内,也就是说任意时候0...

2022-07-20 21:48:54 108

原创 《七月集训》第十二日)——链表

设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性prev以指示链表中的上一个节点。假设链表中的所有节点都是0-index的。get(index)获取链表中第index个节点的值。如果索引无效,则返回-1。在链表的第一个元素之前添加一个值为val的节点。插入后,新节点将成为链表的第一个节点。给你两个整数。...

2022-07-19 22:47:06 168

原创 《七月集训》第十一日——矩阵

给你一个nxn的整数方阵matrix。选择matrix中相邻两个元素,并将它们都乘以-1。如果两个元素有公共边,那么它们就是相邻的。你的目的是最大化方阵元素的和。请你在执行以上操作之后,返回方阵的最大和。3x3的幻方是一个填充有从1到9的不同数字的3x3矩阵,其中每行,每列以及两条对角线上的各数之和都相等。给定一个由整数组成的rowxcol的grid,其中有多少个3×3的“幻方”子矩阵?(每个子矩阵都是连续的)。...

2022-07-18 20:43:19 135

原创 《七月集训》第十天——位运算

编写一个函数,不用临时变量,直接交换numbers=[a,b]中a与b的值。给你一个非负整数num,请你返回将它变成0所需要的步数。如果当前数字是偶数,你需要把它除以2;否则,减去1。对整数的二进制表示取反(0变1,1变0)后,再转换为十进制表示,可以得到这个整数的补数。例如,整数5的二进制表示是“101”,取反后得到“010”,再转回十进制表示得到补数2。给你一个整数num,输出它的补数。...

2022-07-17 22:36:54 179

原创 《七月集训》第八日——前缀和

一个班级里有n个学生,编号为0到n-1。每个学生会依次回答问题,编号为0的学生先回答,然后是编号为1的学生,以此类推,直到编号为n-1的学生,然后老师会重复这个过程,重新从编号为0的学生开始回答问题。给你一个长度为n且下标从0开始的整数数组chalk和一个整数k。一开始粉笔盒里总共有k支粉笔。当编号为i的学生回答问题时,他会消耗chalk[i]支粉笔。如果剩余粉笔数量严格小于chalk[i],那么学生i需要补充粉笔。|||...

2022-07-15 22:13:15 167

原创 《七月集训》第七日——哈希表

给定三个整数x、y和bound,返回值小于或等于bound的所有强整数组成的列表。如果某一整数可以表示为xi+yj,其中整数i>=0且j>=0,那么我们认为该整数是一个强整数。你可以按任何顺序返回答案。在你的回答中,每个值最多出现一次。给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字X,使我们可以将整副牌按下述规则分成1组或更多组每组都有X张牌。组内所有的牌上都写着相同的整数。...

2022-07-14 21:28:16 247

原创 《七月集训》第六日——滑动窗口

这是七月集训的第6日,今日的训练内容是 滑动窗口643. 子数组最大平均数 I这题直接暴力解是会超时的,而且此题使用滑动窗口非常之典型。题目中也有着几个小细节可以优化代码的速度。首先,虽然最后需要返回的是平均值,但是求平均值的过程完全可以放到最后返回结果的时候。同时,使用 double 类型的时候计算会慢上一些。完全可以先用 int 类型存储数据,然后到最后计算的时候再转回到 double 的类型。2.力扣718原题链接718. 最长重复子数组这里参考了题解,一个很巧妙的滑动窗口的思路。将两个窗口像两

2022-07-13 22:50:01 136

原创 《七月集训》第五日——双指针

这是七月集训的第5日,今日的训练内容是 双指针392. 判断子序列使用双指针对数据进行遍历,相等的时候移动两个指针,否则只移动 t 的指针。2.力扣541原题链接541. 反转字符串 II直接模拟就可以了。3.力扣面试题 16.24. 数对和原题链接面试题 16.24. 数对和这题因为只是两数之和因此很简单,直接对原来的数组进行排序,然后从两段开始取数字。如果大于目标值就减小右端点,如果小于目标值就增大左端点。然后出现了目标值就填入数组,然后两边一起移动,这样也可以保证的到每一个数字都是只被使用

2022-07-10 22:55:31 140

原创 《七月集训》第四日——贪心

这是七月集训的第4日,今日的训练内容是 贪心2078. 两栋颜色不同且距离最远的房子这题没有想到贪心的写法,这里使用双指针直接遍历。2.力扣561原题链接561. 数组拆分既然需要每一组中的最小值都最大,那直接排序取小的那个加和就可以了。3.力扣1323原题链接1323. 6 和 9 组成的最大数字从最大的不是 9 的位开始变为 9即可。注意,在c语言中,在定义数组的时候,数组的容量必须是定值而不可以是变量,但是使用 就没有问题了。4.力扣942原题链接942. 增减字符串匹配直接双指针开

2022-07-09 23:25:32 236

原创 《七月集训》第三日——排序

这是七月集训的第3日,今日的训练内容是 排序912. 排序数组直接使用c的排序API就可以了,这里也算是复习一下了。2.力扣88原题链接88. 合并两个有序数组先填入再排序就可以了。3.力扣1037原题链接1037. 有效的回旋镖直接用三角形面积公式判断是否能构成三角形。双百。4.力扣1232原题链接1232. 缀点成线使用和上一题一样的思路,不过这次要遍历,因此效率会低一些。...

2022-07-08 20:44:12 88

原创 《七月集训》第二日——字符串

这是七月集训的第2日,今日的训练内容是 字符串2315. 统计星号用一个栈记录一下 ‘|’ 的数量就可以了。2.力扣459原题链接459. 重复的子字符串这题之前有做过类似的题目,使用了比较暴力的算法进行枚举,这次学习了官解的思路:如果一个字符串是满足条件的子串,那么把这个子串从头去掉,然后再加到字符串的尾部,这个字符串和原来仍然相同。这是主要思路,然后由这个思路通过一系列的证明可以证明:如果把原来的字符串 s 接在本身的后面,然后去除第一个和最后一个字符之后 s 是新字符串的子串,那么就可以得出原来

2022-07-03 22:53:27 142

原创 《七月集训》第一日——数组

这是七月集训的第一日,今日的训练内容是 数组2319. 判断矩阵是否是一个 X 矩阵首先遍历对角线,如果出现了不为 0 的数字说明不符合要求,直接返回 false 。否则就将对角线上的数字全都改为 0。在修改后再对数组进行遍历,此时只有整个数组都为 0 才符合要求。2.力扣599原题链接599. 两个列表的最小索引总和使用暴力的双遍历对两个数组进行遍历,并且保留好当前最小的满足条件的下标和,只有当出现了更下的下标和的时候才会将当前的数据覆盖。3.力扣674原题链接674. 最长连续递增序列一边遍

2022-07-01 21:28:31 178

原创 《六月集训》第二十日——二叉搜索树

这是六月集训的第二十日,今日的训练内容是 二叉搜索树。

2022-06-20 13:34:59 1018

原创 《六月集训》第十九日——二叉树(序列化)

这是六月集训的第十九日,今日的训练内容是 二叉树今日的题目的主题只有一个,二叉树的序列化和反序列化。今天的题目做完感觉又是收获满满。331. 验证二叉树的前序序列化假如此序列可以形成二叉树的话,那必定满足,数字的结点提供了一个入度和两个出度,而 # 结点只提供了一个入度,没有出度。根结点的入度是 0,出度是 2 最终一个二叉树的出度和入度是相等的,因此可以靠统计入度和出度的大小来判断其是否为二叉树。不可能出现入度大于出度的时刻。还需要注意一些,数字结点里面根结点是特殊的,它没有入度,因此要特殊化处理一下,给

2022-06-19 15:29:24 186

原创 《六月集训》第十八日——树

这是六月集训的第十八日,今日的训练内容是 树今日学到很多深度优先搜索的知识。1361. 验证二叉树先记录一下,对于入度出度还有很多不懂的东西。1367. 二叉树中的列表好好记录一下这道题,这道题是属于有思路但是不知道怎么实现的题目,在看了一下别人的解法之后对DFS的写法有了一些新的想法,在源码剖析仔细的来记录一下这道题的解法。这种写法的意思就是,递归遍历到底,只要有一条路径是满足题目要求的解就可以返回 true。这个递归的意思是,对每一个结点的左子树和右子树都进行深度优先搜索寻找是否有满足条件的路径,

2022-06-18 23:29:03 87

原创 《六月集训》第十七日——广度优先搜索

这是六月集训的第十七日,今日的训练内容是 广度优先搜索2059. 转化数字的最小运算数这题的BFS是需要借助访问数组的,因为会出现死循环的情况。然后直接BFS就可以了(使用一个队列来辅助)。2.力扣690原题链接690. 员工的重要性这题只可以用c++写,不可以用c写,所以就只能先记录一下了。672. 灯泡开关 Ⅱ没太想明白怎么用BFS来实现,先做记录。...

2022-06-17 23:39:35 225

原创 《六月集训》第十六日——队列

这是六月集训的第十六日,今日的训练内容是 队列933. 最近的请求次数详细的解题思路见源码剖析中的注释,这是一道上个月做过的题。2.力扣1700原题链接1700. 无法吃午餐的学生数量在上个月曾经做过的一道题,在这道题里我没有使用到结构体,直接使用一下指针来模拟循环队列。详见源码剖析。3.力扣2073原题链接2073. 买票需要的时间首先把数组填入一个队列之中,在填入的过程中,使用一个指针指向第 k 个结点的数据域,一旦当这个数据域变为0了说明循环已经结束了,具体的分析可以见源码剖析的注释部分,

2022-06-17 23:29:47 128

原创 《六月集训》第十四日——栈

这是六月集训的第十四日,今日的训练内容是 栈剑指 Offer 31. 栈的压入、弹出序列定义一个辅助的栈用于按照题目的要求进行压栈,然后每当 popped 数组的元素与栈顶元素相等的时候,就出栈,并且移动指向 popped 数组的指针,如果最后压栈全部都结束了仍然有没有出栈的元素在,那么就说明不能满足条件,因此只需要看栈顶指针是否为 0 即可。值得注意的一点是:在内部的 循环的判断条件处,一定要把 top 写在前面,这样当 top 为 0 时直接就不会进行后面的判断,也就可以避免了数组下标越界的问题了。

2022-06-14 23:24:47 77

原创 《六月集训》第十三日——双向链表

这是六月集训的第十三日,今日的训练内容是 双向链表432. 全 O(1) 的数据结构除去入列的操作之外,其他的地方还是有些思路的,但是仍然没有想明白怎么样可以在O(1)的复杂度下实现字符串的入列,先记录一下吧。...

2022-06-13 23:32:44 65

原创 《六月集训》第十二日——链表

这是六月集训的第十二日,今日的训练内容是 链表328. 奇偶链表这题主要麻烦在代码怎么写上,思路其实很简单,定义两个指针分别指向奇数索引项和偶数索引项,然后分别填充完两个链表之后再把偶数索引项的链表接到奇数索引项链表的尾部就可以了。而代码的细节部分会在源码剖析中注释。虽然写的可能比较复杂了,但是能够独立写出链表的题目也是一大进步了。2.力扣725原题链接725. 分隔链表这题中我写的代码有些自己暂时难以解决的bug,先记录一下自己现在写的代码,等之后回来再来好好研究一下问题到底出在哪里,目前的问题是

2022-06-12 14:02:01 529

原创 《六月集训》第十一日——矩阵

这是六月集训的第日,今日的训练内容是 ****面试题 01.08. 零矩阵使用另一个矩阵存储原来数组中的所有的 0 的位置,然后遍历记录数组,我采用的方式是,按行进行遍历:首先如果某一行存在 0 的话,先把这一行所有的数字变成 0 ,然后再从找到 0 的那一列开始,每找到记录数组中有记号,就把原数组这一列全都变为 0 。其实是可以完全避免重复的,但是代码写起来会繁琐一些,因此在这里只对行重复进行了处理,列重复并没有处理。2.力扣73原题链接73. 矩阵置零就是上一题,不过要求线性空间,其实只要把数组改

2022-06-11 21:39:20 100

原创 《六月集训》第十日——位运算

这是六月集训的第十日,今日的训练内容是 位运算868. 二进制间距首先先去除掉末位的所有的0,然后再开始右移数字,并且记录下右移的次数,每次碰到新的1之后就重置计数器,并且把现在的位移次数与 max 相比, 然后返回 max即可。2.力扣1734原题链接1734. 解码异或后的排列首先先求出perm[0],求出了perm[0]之后,就可以很容易的求出原来数组的每一位。第一个元素的值等于原始数组里面所有元素的值的异或解结果和除了第一个元素的所有的元素的异或的结果的值相异或。3.力扣89原题链接89

2022-06-10 22:53:19 123

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除