自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代理随想录算法训练营第十七天(LeetCode654.最大二叉树;LeetCode617.合并二叉树;LeetCode700.二叉搜索树中的搜索;LeetCode98.验证二叉搜索树)

合并两个二叉树,如果一个节点上两个二叉树都有值的话,那就将这两个值加和的值合并在一起,如果只有一颗二叉树有值的话,那就直接赋值。这道题目给定我们一颗二叉树,要求我们确定它是否是二叉搜索树。

2024-12-11 19:50:54 428

原创 代码随想录算法训练营第十六天(LeetCode513.找树左下角的值;LeetCode112.路径总和;LeetCode113.路径总和Ⅱ;LeetCode106.从中序与后序遍历序列构造二叉树)

【代码】代码随想录算法训练营第十六天(LeetCode513.找树左下角的值;LeetCode112.路径总和;LeetCode113.路径总和Ⅱ;LeetCode106.从中序与后序遍历序列构造二叉树)

2024-12-04 16:26:06 529

原创 代码随想录算法训练营第十五天(LeetCode110.平衡二叉树;LeetCode257.二叉树的所有路径;LeetCode404.左叶子之和;LeetCode222.完全二叉树的节点个数)

【代码】代码随想录算法训练营第十五天(LeetCode110.平衡二叉树;LeetCode257.二叉树的所有路径;LeetCode404.左叶子之和;LeetCode222.完全二叉树的节点个数)

2024-12-02 20:48:24 360

原创 代码随想录算法训练营第十四天(统一迭代;LeetCode226.翻转二叉树;LeetCode101.对称二叉树;LeetCode104.二叉树的最大深度;LeetCode111.二叉树的最小深度)

该题目的关键就在于交换一个节点的左右孩子,所以使用前序遍历和后序遍历交换应该都可以,使用中序遍历进行交换是不可以的,因为使用中序遍历进行交换会导致某些节点交换两次。该题目可以使用递归法、回溯法、层序遍历。该题目可以使用递归法和层序遍历。

2024-11-27 20:25:50 538

原创 代码随想录算法训练营第十三天(递归遍历;迭代遍历;统一迭代;层序遍历)

【代码】代码随想录算法训练营第十三天(递归遍历;迭代遍历;统一迭代;层序遍历)

2024-11-26 15:57:30 653

原创 代码随想录算法训练营第十一天(LeetCode150.逆波兰表达式求值;LeetCode239.滑动窗口最大值;LeetCode347.前K个高频元素)

自己设计一个单调队列,有三个函数 pop 函数、push 函数和 getMaxValue 函数,每次将一个元素 push 进入单调队列,如果单调队列现存的元素全部小于 push 进来的元素,那么单调队列现存的元素全部 pop 出去,同时,如果 push 现存的元素后,单调队列中的元素个数大于 k 的时候,那么也要 pop 元素出去,这样可以保证单调队列队头元素就是我们想要获得的最大值,getMaxValue 函数就是获取单调队列的队头元素。2.适合用栈操作运算:遇到数字则入栈;

2024-11-25 20:49:48 648

原创 代码随想录算法训练营第十天(LeetCode232.用栈实现队列;LeetCode225.用队列实现栈;LeetCode20.有效的括号;LeetCode1047.删除字符串中的所有相邻重复项)

队列是先进先出,栈是先进后出,为了能够让栈可以模拟队列的先进先出,我们设置两个栈,一个栈作为入栈,一个栈作为出栈,我们在入栈存储完数据后,将入栈中的数据全部存储到出栈中,那么从出栈中弹出来的数据就是先进先出的数据。但是我们会发现,只有每次出栈中的数据全部被弹出后,入栈中的数据才能存储到出栈中,否则无法实现先进先出,因为出栈中残存的数据会被入栈的数据压到底下,所以入栈相当于出栈的一个缓冲区,每次当出栈数据全部弹出后,从入栈这个缓冲区里面获取数据。

2024-11-22 16:21:04 715

原创 代码随想录算法训练营第九天(LeetCode151.翻转字符串里的单词;卡码网55.右旋转字符串;LeetCode28.实现strStr();LeetCode459.重复的子字符串)

f 时开始变得不匹配,使用 KMP 算法可以使得进行匹配的时候不需要再从文本串的第二个字符开始匹配,而是直接从不匹配的地方开始匹配,同时,模式串不需要从头开始,而是从前缀等于后缀的前缀的下一个字符开始。的思路解决此题,要判断一个字符串 s是由它的子串重复组成的话,只要将两个 s 拼接在一起,里面还出现了一个 s 的话,就说明是由重复字串组成的。前缀表示不包含尾字符包含首字符的所有连续子串。后缀表示包含尾字符不包含首字符的所有连续字串。前缀表和后缀表是对于模式串而言的。还可以使用 KMP 算法求解。

2024-11-21 13:46:24 653

原创 代码随想录算法训练营第八天(LeetCode344.反转字符串;LeetCode541.反转字符串Ⅱ;卡码网54.替换数字)

题目链接: 反转字符串题目链接这道题目让我们进行字符串的反转,其实直接使用 reverse 相关的函数就可以解决问题。但是解决问题的时候,如果这道题目使用库函数就可以直接解决,就最好不要使用库函数;如果库函数只是题目中解法的一小步,那么就使用库函数。在不使用库函数的前提下,我们设置两个指针,让两个指针分别从数组两边向中间走,每次执行完交换操作后执行中间走操作。LeetCode 541. 反转字符串Ⅱ题目链接:反转字符串Ⅱ题目链接这道题目其实就是一道根据题意的模拟题。要求我们每次选取数组中前 2 k 个元

2024-11-18 19:26:04 528

原创 代码随想录算法训练营第七天(LeetCode454.四数相加Ⅱ;LeetCode383.赎金信;LeetCode15.三数之和;LeetCode18.四数之和)

然后判断三个指针指向的元素和是否为 0,因为我们之前首先要对数组进行排序操作,所以如果和大于 0,则我们将 right 值减 1,如果和小于 0,我们将 left 值加 1,后续又要考虑 left 和 right 值的去重操作,left 值的去重操作是使用。这道题目给定我们四个数组,让我们判断从四个数组中分别取一个元素,然后将这四个元素相加,值为 0 的元组个数,所以我们可以模仿两数之和,因为四个数组中分别取元素就是任意取,不需要考虑去重的问题,所以可以将四个数组转换成两个数组。

2024-11-14 17:40:13 572

原创 代码随想录算法训练营第六天(LeetCode242.有效的字母异位词;LeetCode349.两个数组的交集;LeetCode202.快乐数;LeetCode1.两数之和)

我们使用哈希表就可以实现这种操作,如果我们使用 HashSet 方法,我们只需要将其中一个数组中的元素存入一个哈希表中,因为哈希表会自动帮我们去重,所以我们无需担心重复的问题,然后使用另一个数组的元素,判断元素是否出现在哈希表中,在哈希表中有独特的方法可以进行判断。因为本题只包含小写字母,所以我们可以直接使用数组充当哈希表,我们首先遍历字符串 s,将其的字母转换成数字,然后通过数组存储它是否出现过以及出现过几次,即每次遇到一个字母使用。,然后遍历字符串 t,使用与字符串 s相同的方式进行判断,判断过程为。

2024-11-13 19:27:42 1667

原创 代码随想录算法训练营第四天(LeetCode24.两两交换链表中的节点;LeetCode10.删除链表的倒数第N个节点;LeetCode面试题02.07.链表相交;LeetCode142.环形链表Ⅱ)

说明从头节点走到环形链表的入口和从相遇节点走到环形链表的入口的距离时相等的,如果 n>1,则说明从头节点走到环形链表的入口和从相遇节点走到环形链表的入口+在环里走的圈数的距离时相等的,那么当我们找到 fast 和 slow 相遇的地方时,我们只需要设计两个指针,一个指针从头节点开始走,每次走一步,一个指针从相遇节点开始走,每次走一步,当这两个节点相遇时,所在的位置就是环形链表的入口节点。2、3 节点不互换,意思就是交换过的节点不参与后续的交换了),同时只能进行节点交换,不能进行值交换。

2024-11-12 11:26:50 574

原创 代码随想录算法训练营第三天(LeetCode203.移除链表元素;LeetCode707.设计链表;LeetCode206.反转链表)

在这道题目中其实就是给定我们一个链表,让我们将这个链表反转。我们可以采用双指针的做法来解决这个问题,一个 pre 指针指向 null,一个 cur 指针指向给定链表的头节点,一个 temp 指针指向 cur 指针的下一个指针(因为 cur 指针的下一步操作就是指向改为 pre,所以原先的下一个链表节点需要进行存储),cur 的指向改为 pre。这道题目主要考察的是移除一个链表当中的元素,我们可以先在给定的链表前面加一个虚拟头结点,这样我们对给定链表头结点的操作和给定链表其余结点的操作就会变得相同。

2024-11-11 16:56:43 611

原创 代码随想录算法训练营第二天(LeetCode209.长度最小的子数组;LeetCode59.螺旋矩阵Ⅱ;区间和;开发商购买土地)

当我们想要获得数组中一个子数组的和时,我们首先考虑到的就是暴力的做法,暴力的做法需要一重循环遍历子数组的所有元素然后再相加,如果我们需要 m 次查询子数组的和,那么我们的时间复杂度就是 O (mn)。这道题目主要考察的是数组中的模拟。,然后我们完成了这道题目的第一个条件,也就是实现了总和大于等于 target,然后需要我们实现第二个条件,也就是长度最小,关于长度最小,就需要我们使用慢指针来缩短窗口的大小,直到不满足第一个条件,我们再次移动快指针。然后,我们使用前缀和的思想使得划分出来的两个部分的差值最小。

2024-10-31 20:25:48 472 1

原创 代码随想录算法训练营第一天(LeetCode704.二分查找;LeetCode27.移除元素 ;LeetCode977.有序数组的平方)

题目链接: LeetCode704.二分查找题目链接二分查找的主要思路在于目标元素 target是在 [left,right][left, right][left,right] 还是 [left,right)[left,right)[left,right) 区间。左闭右闭区间下的代码:左闭右开区间下的代码:LeetCode 27. 移除元素题目链接: LeetCode27.移除元素题目链接暴力做法的代码:双指针做法的代码:LeetCode 977. 有序数组的平方LeetCode977.有序数组

2024-10-30 20:15:23 2230 1

原创 LeetCdoe209.长度最小的子数组(滑动窗口例题,后有练习题)

讲解滑动窗口的基本例题,帮助大家理解滑动窗口,同时附了一道练习题,包括练习题的讲解。

2024-10-10 20:34:51 787

原创 LeetCode27.移除元素(双指针例题)

讲解最基本的双指针例题,理解最基础的双指针用法。

2024-10-10 19:52:36 737

原创 讲透LeetCode35.搜索插入位置(二分查找例题)

详细讲解LeetCode35.搜索插入位置。

2024-10-09 15:43:52 1672 1

原创 二分查找基础模板

使用二分查找解决最基础的二分问题,提供二分查找的两种思路和基本模板。

2024-10-09 14:48:24 271

空空如也

空空如也

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

TA关注的人

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