自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录跟练日记|Day18 二叉树part06

解题思路:双指针法递归遍历二叉树,同时更新出现次数cnt和res,若当前cnt比max大,则清空res中的值,将当前节点值插入res,若相等则直接插入res,最后输出res结果。解题思路:后序遍历二叉树,运用回溯层层返回公共祖先,若当前节点值为p或q则返回当前节点。左为空右不为空则说明最近的公共祖先在右子树里,继续返回右子树返回的值,左不为空同理。解题思路:双指针法,两个指针分别指向当前节点和前一节点,递归比较二者差值更新res。530.二叉搜索树的最小绝对差 ,501.二叉搜索树中的众数 ,

2024-07-31 10:23:52 269

原创 代码随想录跟练日记|Day17 二叉树part05

解题思路:遍历数组寻找最大值,将值赋给新节点,并记录其下标,然后将剩余数组按最大值下标分割为左右两个新数组,继续寻找最大值记录下标,其值为根节点的左右子节点,再继续分割数组。解题思路:递归法合并两个二叉树,运用前序,先处理中间节点,若r1为空则返回r2,r2为空则返回r1,中间节点值为r1r2值之和,再依次递归遍历中间节点的左右子树,最后返回root。方法二:依次比较每个节点与它前一个节点的大小,如果前节点的值大于等于当前节点,则说明该二叉树不是二叉搜索树,返回false。700.二叉搜索树中的搜索。

2024-07-31 09:09:51 241

原创 代码随想录跟练日记|Day16 二叉树part04

-今日任务--:513.找树左下角的值,112. 路径总和,106.从中序与后序遍历序列构造二叉树。

2024-07-19 22:16:02 559

原创 代码随想录跟练日记|Day15 二叉树part03

解题思路:前序遍历二叉树,将节点值push进path数组中,直到遍历到叶子结点结束遍历,将path中的值全部更改为字符串并符合输出的形式,存入res数组。解题思路:递归法:后序遍历又下至上返回每个节点的左右子树的高度,若左右子树高度相差大于1,则说明不是平衡树,该次遍历结果返回-1。解题思路:后序遍历二叉树,寻找左叶子,即该节点的左节点不为空,并且左节点的左右节点都为空,返回节点左右子树的左叶子值,计算和并返回。222.完全二叉树的节点个数,110.平衡二叉树,257. 二叉树的所有路径,

2024-07-18 18:11:00 228

原创 代码随想录跟练日记|Day14 二叉树part02

解题思路:递归法:二叉树根结点的高度即二叉树的深度,后序遍历二叉树,从下往上依次返回每一层的高度,直到返回到根节点。解题思路:和上道题类似,区别是求到叶子结点的最小距离,所以判断条件中要加上若左子树为空则取右子树的值,右子树为空则取左子树的值,否则取左右子树最小值。迭代法:运用队列方式,添加节点到队列里时,依次添加相对称的节点,每次比较队列的前两个节点即互为对称的节点是否相等,若相等则继续比较该节点的下一层节点。递归法:先交换左右子树位置,再遍历左右子树(前序),也可以先遍历子树再交换(后序)。

2024-07-18 09:15:02 543

原创 代码随想录跟练日记|Day13 二叉树part01

-今日任务--:二叉树的递归遍历,二叉树的迭代遍历,二叉树的层序遍历。

2024-07-17 10:12:23 395

原创 代码随想录跟练日记|Day11 栈与队列part02

解题思路:用unordered_map保存每个元素出现的次数,key为元素值,value为出现次数,直接进行快速排序时间复杂度为O(nlogn),若运用堆的数据结构,每次只维护k个有序序列,时间复杂度为O(nlogk)。定义push函数,若大于队尾元素则删除队尾元素,直到小于等于时将其push进队尾,使其队列一直处于单调递减,因为被移除的元素都比新加入元素小,而队列中元素比较的为滑动窗口所包含k个值的结果,所以被移除元素无论如何都不可能是滑动窗口最大值,只需保证队首元素一直为滑动窗口中最大值。

2024-07-14 00:02:36 605

原创 代码随想录跟练日记|Day10 栈与队列part01

解题思路:运用两个栈实现队列,定义用于push的stIn栈和pop的stOut栈,push操作正常将其压入stIn栈即可。输出时,因为栈先入后出的特性,需将其中元素反转,借助stOut栈,将stIn顶部元素压入stOut中,再进行pop操作。解题思路:定义一个栈,遍历字符串s,栈空时将将字符压入栈中,栈不空时比较栈顶元素是否与所指向的字符相同,若不同则将字符压入栈,若相同,栈顶元素出栈,最后将栈中元素依次出栈,用字符串表示。(4)获取队尾元素(back): 返回队列中的最后一个元素,但不移除它。

2024-07-13 10:22:49 517

原创 代码随想录跟练日记|Day9 字符串part02

-今日任务--:151.翻转字符串里的单词,卡码网:55.右旋转字符串,28. 实现 strStr()151.翻转字符串里的单词解题思路:本题有两步,第一 删除字符串中多余的空格,第二 反转单词(首先反转整个字符串,再分别反转每个单词)。第一 删除字符串中多余的空格:双指针法,如果快指针所指向位置不为‘ ’,并且慢指针不指向0位置,则说明当前位置为一个单词开头,手动用慢指针添加空格,用while循环将整个单词存入慢指针所指向位置。快指针继续遍历字符串,查找下一个单词所在位置。

2024-07-11 23:48:25 724

原创 代码随想录跟练日记|Day8 字符串part01

reverse函数区间为左闭右开,所以当前k个字符小于等于size时(包括i+2k>size和i+2k<size但k>size两种情况),进行reverse i到i+k(reverse取不到k),当i+k<size时,反转i到末尾。解题思路:将数字替换为'number',需要扩大字符串大小,首先遍历一遍字符串s,用cnt记录数字出现多少个,再重新分配s的空间大小。从后往前遍历字符串,这样无需每次更换数字时移动所有字符,时间复杂度较小,若遇到原字符串为数字的情况,均改为number。

2024-07-10 23:37:59 477

原创 代码随想录跟练日记|Day7 哈希表part02

解题思路:若直接遍历四个数组,则时间复杂度为O(n^4),将其分为一个数组和三个数组分别遍历则时间复杂度为O(n^3),所以最好将其分为两组,每组为两个数组,遍历数组时间复杂度为O(n^2)。首先遍历nums1和nums2数组,计算每个值的和,运用unordered_map类型的哈希表存储key为相加值,value为该值出现的次数,再计算nums3和nums4数组相加之和,查找哈希表中是都存在相反数,若存在则将value值计入count中,结果返回count。其他同上题几乎一致。454.四数相加II。

2024-07-09 23:39:42 441

原创 代码随想录跟练日记|Day6 哈希表part01

-今日任务--:哈希表理论基础, 242.有效的字母异位词 ,349. 两个数组的交集 ,202. 快乐数,1. 两数之和242.有效的字母异位词解题思路:数组实现哈希表,将s中每个字母出现次数记录在数组的对应位置中,再将数组中对应位置减去t中字母出现次数,最后遍历数组,若存在不为0的情况,则不是有效字母异位词。定义字母对应位置的方法:无需知道每个字母的ASCII码,用s[i]-'a'即对应位置,若s[i]为a,即对应hash[0]。349. 两个数组的交集题目链接。

2024-07-08 22:41:25 1826

原创 代码随想录跟练日记|Day4 链表part02

求出链表长度,并求出两个链表长度的差值,若A链表比B链表长,则交换两链表的指针和长度,使curA一直指向最长的链表。链表题中对头结点和其他节点操作不同的情况下添加虚拟头结点解决,掌握链表的定义和增删改查操作的思路以及正确书写算法代码是很重要的,反转链表,删除倒数第n个节点,链表相交,环形链表中又和双指针的方法结合。定义双指针fast,slow,fast一次走两个节点,slow一次走一个节点,相对于slow,fast每次多走一个节点,所以链表若存在环,两指针必定会相交且fast指针不会跳过slow指针。

2024-07-06 22:45:43 1665

原创 代码随想录跟练日记|Day3 链表part01

链表指针来回变换的思想比较容易理解,已经掌握了查找删除插入等基本的原理,但书写算法水平较差,还需多加练习巩固。

2024-07-05 23:59:39 1656

原创 代码随想录跟练日记|Day 2 数组part02

移动滑动窗口末尾位置,计算总和,若窗口内数值总和大于target,计算窗口内含有数值个数,比较res大小,更新结果,移动窗口起始位置,再次比较大小。重复上述步骤遍历数组,得到最小窗口大小,若都不满足题意,则res无法更新,依旧为最大数,则结果为0。思路:重点为边界问题,坚持循环不变量法则,按照左闭右开书写代码,定义starxtx,starty为每一层循环的起始位置,循环一圈后都+1,offset用于控制每条边遍历的长度,cnt为排序元素,loop循环次数,若n为奇数时,循环剩最后一个时单独赋值。

2024-07-04 21:31:16 493

原创 代码随想录跟练日记|Day1 数组part01

力扣中等难度题型,对我来说稍微有点难,先看了解法再自己写了一遍代码,做到了能够理解的程度,等二刷时再巩固。解题思路:运用两个二分法分别求两侧边界查找元素分为三种情况:1.查找的元素在所给数组左右两边区间外。2.查找元素在数组区间内但不在数组中。3.查找元素在数组中。对于情况一,若查找元素大于区间,则当nums[mid]

2024-07-03 13:17:41 885 2

空空如也

空空如也

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

TA关注的人

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