- 博客(9)
- 收藏
- 关注
原创 二叉树基础概念&递归/迭代遍历理解
先从最基础的说起,本身是一种层次结构的抽象数据类型,用于表示元素之间的层级关系。树结构由节点(Node)和边(Edge)组成。
2024-09-25 20:50:14
1036
原创 栈与队列的基本概念&部分力扣习题
这个词在编程中是一个非常重要的概念,特别是在像 C++ 这样的编程语言中。要理解容器,我们可以从日常生活中的容器(比如盒子、袋子等)来类比。
2024-09-24 06:46:38
784
原创 初学链表感悟&部分链表类力扣题目个人见解
每次用temp保存current指针指向的下一个节点,再让current指针所在节点指向verse指针所在,verse再移动至cur指针所指向的节点即可。这里我们把current指针定义在原先的头结点位置,index--的执行次数是index次,从下标为0的头结点开始,执行index次恰好就是下标为index的节点,此时返回对应值即可。——>在我看来是不用的,因为我们对原来的头结点只需让其指向null这样一个简单情况,没必要额外再消耗内存。此时有了新的头结点,原先的头结点自然在形式上变为了普通节点。
2024-09-16 21:35:40
973
原创 Leetcode 字符串部分: 344.反转字符串 541. 反转字符串II 151.翻转字符串里的单词
本题比上一个题目难度上升了一些,最关键的步骤在于如何判定达到2k次,我一开始是设置一个变量来计数,这样导致时间复杂度额外多乘了一个n。考察如何构建一个我们自己想要的reverse函数,因为库中自带的reverse函数在区间选择上为。添加空格后,慢指针就亦步亦趋的跟在快指针后向对应位置写入字符,直至下一个循环。快指针就是读指针,要全部读一遍;慢指针就是写指针,只在需要的时候再写。的条件下,只用从i的新位置到末尾反转即可。,来隔开两段字符,获得单词。整体思路与上方两题区别不大,的条件下,则是从i~i+k。
2024-07-31 21:38:20
308
原创 双指针思想的应用:15. 三数之和 & 18. 四数之和
(2)i从下标0的地方开始,同时定一个下标left 定义在i+1的位置上,定义下标right 在数组结尾的位置上。这种情况下,先前在四数相加中使用的哈希表的解题思路并不完全适用于此题,去重操作大大提升了此问题的时间复杂度。与上题的区别在于剪枝操作有了更加严格的要求,其他大体思路不变[在原来的基础上加了一层遍历]——》,因为数组是排序后了, 所以right下标就应该向左移动,这样才能让三数之和小一些。,left 就向右移动,才能让 三数之和大一些,直到left与right相遇为止。
2024-07-24 00:33:09
786
原创 哈希表:初步理解 & Leetcode 相关题目:242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 454.四数相加II
而有了哈希函数,相当于在检索的时候,作为一个根据关键词匹配内容的系统,能够直接给出特定的地址,直接匹配到对应的保险箱。:集和在存储上更高效,因为只存储实际存在的元素,避免了大量空闲位置的浪费,并且在哈希值跨度大、数据稀疏时也能有效管理内存,提升空间利用率。我们可以把这种形式看作一个保险箱系统,其中特征是用来打开箱子的钥匙,而整数值对应的地址就是储存信息的箱子。我们要根据题目的要求,因地制宜的选择不同的数据容器,进而降低时间复杂度,提高运算速度。参考教程如上,除此之外参考视频下方的首条评论也讲的很好。
2024-07-23 00:57:14
852
原创 时间复杂度概念
,总共一步,外面执行了n次,也就是n步——》O(n)一样也是线性判断,但是此处的n值的不同导致最终的步骤会有不同,因此令复杂度为O(log n)换句话说,完整代码块是从开始解决问题到问题解决后重新回到起始点的所有步骤。最外层为while循环,由于判定原因,里面的循环实质上在每一次外层循环下。up主讲的已经很好了,本人写这篇博客主要是为了巩固所学,:)找到了这段代码后,直接计算其步数即可,复杂度都会是O(1)那么里面就是简单的O(1),最后的总复杂度也就是O(n)。的核心,依然很好解决。
2024-07-18 11:32:41
268
原创 leetcode 数组部分 704. 二分查找、27. 移除元素
/一开始犯傻了,还把mid定义写在循环外,导致if判定下有重复代码return -1;个人的编程水平较低,一开始在循环外声明了mid,还在两个if判断下给mid重新赋值,导致可读性不如上图中的内容,记下来引以为戒。
2024-07-17 23:05:10
314
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人