自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第十七天|110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

此题用迭代法,其实效率很低,因为没有很好的模拟回溯的过程,所以迭代法有很多重复的计算。虽然理论上所有的递归都可以用迭代来实现,但是有的场景难度可能比较大。通过本题可以了解求二叉树深度 和 二叉树高度的差异,求深度适合用前序遍历,而求高度适合用后序遍历。本文我们开始初步涉及到了回溯,很多同学过了这道题目,可能都不知道自己其实使用了回溯,回溯和递归都是相伴相生的。404.左叶子之和404. 左叶子之和 - 力扣(LeetCode)本题依旧可用递归法和迭代法解决,但我目前只掌握理解了递归法,所以就只写递归法,

2024-02-16 00:09:37 350 1

原创 代码随想录算法训练营第十六天|104.二叉树的最大深度、111.二叉树的最小深度

根节点的高度就是二叉树的最大深度,所以本题中我们通过后序求的根节点高度来求的二叉树最大深度。111.二叉树的最小深度111. 二叉树的最小深度 - 力扣(LeetCode)最小深度是从根节点到最近叶子节点的最短路径上的节点数量。注意是叶子节点。222.完全二叉树的节点个数222. 完全二叉树的节点个数 - 力扣(LeetCode)首先按照普通二叉树的逻辑来求。这道题目的递归法和求二叉树的深度写法类似, 而迭代法,二叉树:层序遍历登场!遍历模板稍稍修改一下,记录遍历的节点数量就可以了。

2024-02-15 23:26:15 803 1

原创 代码随想录算法训练营第十五天|226.翻转二叉树、101. 对称二叉树

针对二叉树的问题,解题之前一定要想清楚究竟是前中后序遍历,还是层序遍历。101. 对称二叉树101. 对称二叉树 - 力扣(LeetCode)在迭代法中我们使用了队列,需要注意的是这不是层序遍历,而且仅仅通过一个容器来成对的存放我们要比较的元素,知道这一本质之后就发现,用队列,用栈,甚至用数组,都是可以的。

2024-02-07 22:24:36 406

原创 代码随想录算法训练营第十四天|二叉树的递归遍历

递归算法的三个要素。确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。

2024-02-07 22:05:12 217 1

原创 代码随想录算法训练营第十三天| 239. 滑动窗口最大值、347.前 K 个高频元素

这是使用单调队列的经典题目。难点是如何求一个区间里的最大值。347.前 K 个高频元素347. 前 K 个高频元素 - 力扣(LeetCode)要统计元素出现频率对频率排序找出前K个高频元素。

2024-02-05 19:32:53 287 1

原创 代码随想录算法训练营第十一天|20. 有效的括号 、1047. 删除字符串中的所有相邻重复项 、 150. 逆波兰表达式求值

括号匹配是使用栈解决的经典问题。1047. 删除字符串中的所有相邻重复项1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)本题要删除相邻相同元素,相对于20. 有效的括号 (opens new window)来说其实也是匹配问题,20. 有效的括号 是匹配左右括号,本题是匹配相邻元素,最后都是做消除的操作。本题也是用栈来解决的经典题目。150. 逆波兰表达式求值150. 逆波兰表达式求值 - 力扣(LeetCode)本题和。

2024-02-03 21:33:20 407 1

原创 代码随想录算法训练营第十天|232.用栈实现队列 、 225. 用队列实现栈

这是一道模拟题,不涉及到具体算法,考察的就是对栈和队列的掌握程度。225. 用队列实现栈225. 用队列实现栈 - 力扣(LeetCode)队列模拟栈,其实一个队列就够了,但两个也可以,只不过把一个当成备份。队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并没有变成先进后出的顺序。所以用栈实现队列, 和用队列实现栈的思路还是不一样的,这取决于这两个数据结构的性质。

2024-02-02 22:38:13 372

原创 代码随想录算法训练营第九天|28. 实现 strStr() 、459.重复的子字符串

28. 实现 strStr()

2024-02-02 22:24:59 99

原创 代码随想录算法训练营第八天|344.反转字符串、541. 反转字符串II、卡码网:54.替换数字 、151.翻转字符串里的单词 、卡码网:55.右旋转字符串

本题建议不直接调用reverse库函数解决,而用双指针法,然后调用swap库函数求解。关于库函数的调用,如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数。如果库函数仅仅是 解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。541. 反转字符串II541. 反转字符串 II - 力扣(LeetCode)第一眼看过去也是反转字符串,但是给它加上了一些特殊的规则,这道题实际上也不涉及到算法层面的知识,就是模拟实现规定的规则就可以了。卡码网:54.替换数字。

2024-01-31 20:31:42 1724

原创 代码随想录算法训练营第七天|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和

本题是使用哈希法的经典题目,只要找到A[i] + B[j] + C[k] + D[l] = 0就可以,不用考虑有重复的四个元素相加等于0的情况。这道题目是求字符串a能否组成字符串b,而不用管字符串b 能不能组成字符串a其实这道题目使用哈希法并不十分合适,因为在去重的操作中有很多细节需要注意,在面试中很难直接写出没有bug的代码。而且使用哈希法 在使用两层for循环的时候,能做的剪枝操作很有限,虽然时间复杂度是O(n^2),也是可以在leetcode上通过,但是程序的执行时间依然比较长。所以。

2024-01-30 22:39:54 1707 1

原创 代码随想录算法训练营第六天|242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

该题是使用哈希法中的数组解决问题,实现快速查找的典型应用。349. 两个数组的交集349. 两个数组的交集 - 力扣(LeetCode)这道题目,主要要学会使用一种哈希数据结构:unordered_set,这个数据结构可以解决很多类似的问题。202. 快乐数202. 快乐数 - 力扣(LeetCode)解题思路求和的过程中,sum会一直重复出现使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。

2024-01-30 20:58:25 1654 1

原创 代码随想录算法训练营第四天|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

做这道题的时候需要注意两个节点是如何交换的以及while循环的判定条件。该题使用双指针法,设置fast和slow指针,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。这道题目,不仅考察对链表的操作,而且还需要一些数学运算。除了第一题以外,其他题完全是更高的level。。。

2024-01-27 21:02:24 529 1

原创 代码随想录算法训练营第三天| 203.移除链表元素、707.设计链表、206.反转链表

单链表删除节点时需要注意删除头节点和删除其他节点的方式是不一样的,要想统一起来则需要使用虚拟节点法。707.设计链表707. 设计链表 - 力扣(LeetCode)基本覆盖了链表的常见操作,对练习链表操作有很大帮助206.反转链表206. 反转链表 - 力扣(LeetCode)这道题只需要改变链表的next指针的指向,直接将链表反转 ,而不用重新定义一个新的链表,可用双指针法和递归法实现。知识部分进脑,还需多多努力,希望迟早能感受到刷题的快乐。

2024-01-26 22:37:40 412

原创 代码随想录算法训练营第二天|977.有序数组的平方、 209.长度最小的子数组、 59.螺旋矩阵II

题目不是很难,不过还需多多琢磨。利用滑动窗口求解时的关键在于for循环索引的理解以及起始位置和终止位置如何进行移动。坚持循环不变量原则。感觉跟历劫一样,困难重重,脑子刚长出来就要大量运动了啊啊啊。今日刷题不是很扎实,只是基本理解了每道题,但自己写不出来,得看题解,还得之后有空再回过头来看看。

2024-01-25 21:33:10 610

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

今天刚看到这题的时候,第一反应是简单查找,一个一个遍历,但学完二分法后明白那是多复杂的做法,如果给的数据非常多的话,查找起来就会非常困难。二分法的关键在于区间的定义,在循环中要始终坚持根据查找区间的定义来做边界处理,常用的有左闭右闭和左闭右开两种,需熟悉并彻底掌握。暴力求解可,双指针更佳。

2024-01-24 23:16:09 521

空空如也

空空如也

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

TA关注的人

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