自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode贪心算法

如果 ratings[i] > ratings[i + 1],此时candyVec[i](第i个小孩的糖果数量)就有两个选择了,一个是candyVec[i + 1] + 1(从右边这个加1得到的糖果数量),一个是candyVec[i](之前比较右孩子大于左孩子得到的糖果数量)。如果ratings[i] > ratings[i - 1] 那么[i]的糖 一定要比[i - 1]的糖多一个,所以贪心:candyVec[i] = candyVec[i - 1] + 1。再确定左孩子大于右孩子的情况(从后向前遍历)

2024-11-21 15:50:29 1906

原创 LeetCode贪心算法

【代码】LeetCode贪心算法。

2024-11-18 21:04:47 356

原创 LeetCode贪心算法

【代码】LeetCode贪心算法。

2024-11-16 21:44:28 706

原创 LeetCode回溯算法打卡

【代码】LeetCode回溯算法打卡。

2024-11-15 17:04:12 267

原创 LeetCode回溯算法打卡

情况就不同了,本题明确要求只会分成4段,所以不能用切割线切到最后作为终止条件,而是分割的段数作为终止条件。循环中 [startIndex, i] 这个区间就是截取的子串,需要判断这个子串是否合法。递归调用时,下一层递归的startIndex要从i+2开始(因为需要在字符串中加入了分隔符。startIndex一定是需要的,因为不能重复分割,记录下一层递归分割的起始位置。pointNum表示逗点数量,pointNum为3说明字符串分成了4段了。),同时记录分割符的数量pointNum 要 +1。

2024-11-14 18:37:06 1840

原创 LeetCode回溯算法打卡

【代码】LeetCode回溯算法打卡。

2024-11-13 17:13:27 224

原创 LeetCode二叉树打卡(重点题目)

那么我们来说一说,如果 root == q,或者 root == p,说明找到 q p ,则将其返回,这个返回值,后面在中节点的处理过程中会用到,那么中节点的处理逻辑,下面讲解。题目中说了输入的数组大小一定是大于等于1的,所以我们不用考虑小于1的情况,那么当递归遍历的时候,如果传入的数组大小为1,说明遍历到了叶子节点了。将删除节点(元素7)的左孩子放到删除节点(元素7)的右子树的最左面节点(元素8)的左孩子上,就是把5为根节点的子树移到了8的左孩子的位置。

2024-11-11 22:05:16 2141

原创 LeetCode二叉树(基础)

注意上面最后一种情况,我没有使用else,而是else if, 因为我们把以上情况都排除之后,剩下的就是 左右节点都不为空,且数值相同的情况。因为我们要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。参数就是要传入节点的指针,不需要其他参数了,通常此时定下来主要参数,如果在写递归的逻辑中发现还需要其他参数的时候,随时补充。此时才进入单层递归的逻辑,单层递归的逻辑就是处理 左右节点都不为空,且数值相同的情况。节点为空的情况有:(

2024-11-08 14:00:26 844

原创 LeetCode二叉树打卡(二叉树的遍历)

1.由于递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候,从栈顶弹出上一次递归的各项参数,所以在迭代法中,我们也用栈实现树的遍历2.栈遵循先进后出的原则,因此我们在进行前序遍历时我们要先将根节点压入栈中,pop之后再将右左节点压入栈中,这样我们就能得到根左右的遍历结果。

2024-11-01 11:10:14 613

原创 LeetCode栈和队列打卡

例如:4 + 13 / 5,这就是中缀表达式,计算机从左到右去扫描的话,扫到13,还要判断13后面是什么运算符,还要比较一下优先级,然后13还和后面的5做运算,做完运算之后,还要向前回退到 4 的位置,继续做加法,你说麻不麻烦!那么将中缀表达式,转化为后缀表达式之后:["4", "13", "5", "/", "+"] ,就不一样了,计算机可以利用栈来顺序处理,不需要考虑优先级了。再多说一些代码开发上的习惯问题,在工业级别代码开发中,最忌讳的就是 实现一个类似的函数,直接把代码粘过来改一改就完事了。

2024-10-29 00:27:05 983

原创 LeetCode字符串篇打卡

【代码】LeetCode字符串篇。

2024-10-26 22:08:31 203

原创 LeetCode哈希算法打卡

两层for循环就可以确定 a 和b 的数值了,可以使用哈希法来确定 0-(a+b) 是否在 数组里出现过,其实这个思路是正确的,但是我们有一个非常棘手的问题,就是题目中说的不可以包含重复的三元组。把符合条件的三元组放进vector中,然后再去重,这样是非常费时的,很容易超时,也是这道题目通过率如此之低的根源所在。去重的过程不好处理,有很多小细节,如果在面试中很难想到位。时间复杂度可以做到O(n^2),但还是比较费时的,因为不好做剪枝操作。//双指针算法/*时间复杂度: O(n^2)

2024-10-25 02:35:17 828

原创 链表篇(移除链表元素、设计链表、反转链表、两两交换链表元素、链表相交、环形链表II)

head。

2024-10-22 00:10:03 398

原创 螺旋矩阵 II

这里每一种颜色,代表一条边,我们遍历的长度,可以看出每一个拐角处的处理规则,拐角处让给新的一条边来继续画,即左闭右开原则。这样能保证在循环时不容易混乱。求解本题要坚持循环不变量原则(规定一种不变的循环方式,在这里我们选择左闭右开的原则)。

2024-10-18 22:07:45 191

原创 STL初识

​ pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用。Stack所有元素的进出都必须符合“先进后出”的条件,只有Stack顶端的元素,才有机会被外界取用,Stack不提供遍历功能,也不提供迭代器。

2024-10-18 14:08:57 678

原创 长度最小子数组

得到前缀和之后,对于每个开始下标 i,可通过二分查找得到大于或等于 i 的最小下标 ,使得 sums[最小下标]−sums[i−1]≥s,并更新子数组的最小长度(此时子数组的长度是 (最小下标−(i−1)))。暴力法是最直观的方法。初始化子数组的最小长度为无穷大,枚举数组 nums 中的每个下标作为子数组的开始下标,对于每个开始下标 i,需要找到大于或等于 i 的最小下标 j,使得从 nums[i] 到 nums[j] 的元素和大于或等于 s,并更新子数组的最小长度(此时子数组的长度是 j−i+1)。

2024-10-18 13:59:48 452

原创 c++部分重难点

p = 30;// p指向的地址是一定的,但其内容可以修改常量指针(const int* p)常量指针本质上是一个指针,常量表示指针指向的内容,说明该指针指向一个“常量”。

2024-10-17 18:40:40 701

空空如也

空空如也

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

TA关注的人

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