
leetcode
文章平均质量分 64
怎么这么帅啊
这个作者很懒,什么都没留下…
展开
-
【C++】【手撕】【n数之和】两数之和、三数之和、四数之和、 最接近的三数之和。套娃开始!
目录一、题目描述二、思路1、两数之和2、三数之和3、四数之和四、代码1、两数之和2、三数之和3、四数之和一、题目描述二、思路1、两数之和排序+双索引;索引要记录。O(nlogn)查找表;有重复数字,hash -value 存vector O(n)查找表;存hash 的时候,就判断前面有没有。重复数字组成的不会干扰结果(因为重复的能实现,也能在插入冲突的时候实现)。O(n)(单次循环)2、三数之和排序+双指针;重点在于去重。3、四数之和三数之和 外嵌四数。重点在于去重。四、代码原创 2021-06-30 11:59:04 · 450 阅读 · 0 评论 -
【学习笔记】【C++】【Leetcode 分门别类讲解】
目录概述一、时间复杂度分析二、数组问题。概述一、时间复杂度分析图的遍历:邻接表实现 :O(e+V) ;邻接矩阵实现O(e2) ;e为节点数,V为边数。字符串数组,先对字符串排顺序,再将数组按照字典序排序:时间复杂度:O( nslogs+snlogn),因为排序n个字符串+n个字符串的排序(字符串也得遍历一遍)均摊时间复杂度问题:对动态数组的扩容和缩容来说,均摊下去时间复杂度只是O(1);所以造成动态数组的操作,整体的均摊时间复杂度为O(1);但是要注意用lazy resize,避免复杂原创 2021-06-27 22:47:00 · 1460 阅读 · 0 评论 -
【C++】【手撕】【top K】两个有序数组中第K个数据;(寻找两个正序数组的中位数)
题目描述文章目录题目描述一、思路二、难点:1、中位数:和是奇数和是偶数怎么办三、代码考察的点:一、思路最简单的思路就是从两个数组头/尾开始归并的计数。但是这样时间复杂度0(m+n);并不满足要求。我们利用二分查找 log 时间复杂度的优势。只要单调就能二分即:寻找两个排序数组中第K个数,先从左边取K/2个数,小的那一边的k/2都不可能是第K个数了,于是排除。更新K=k-k/2,也就是在剩下的数组中,找到第 新K的数字。直到K==1,那么取当前还剩余的数组中开头处偏小的。就像上图原创 2021-06-16 23:17:26 · 346 阅读 · 0 评论 -
【C++】【手撕】【top K】两个有序数组间相加和的Topk问题;优先队列、最大堆。
题目描述https://www.nowcoder.com/questionTerminal/7201cacf73e7495aa5f88b223bbbf6d1文章目录题目描述一、思路二、难点:三、代码四、实现:五、更进一步考察的点:一、思路[要求]时间复杂度为O(k \log k)O(klogk)大概能猜出来要用最大堆来实现了。然后再加上用个bfs来扫描周围的最大值。即:将右下角唯一知道的最大值压入最大堆;弹出最大堆中最大的值,这个值就可以加入最终结果中;将这个最大值的左边节点和上原创 2021-06-16 17:28:52 · 1323 阅读 · 0 评论 -
【C++】剑指offer 23. 链表中环的入口结点(双指针)【链表】//
剑指offer 23. 链表中环的入口结点描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。文章目录剑指offer 23. 链表中环的入口结点一、思路1.代码实现一、思路1. 确定有环:快慢指针,快指针要是追上了慢指针,那么就是有环。2. 确定环长度:快慢指针相遇必定是在环内。从这个节点环回,就是环的长度。3. 确定环入口节点:first 指针从根节点前进环的长度N,然后和second节点一起走,相遇的节点就是入口节点。总长==N+M。M是根节点到环入口节点原创 2021-06-03 12:05:09 · 125 阅读 · 0 评论 -
【C++】剑指 Offer 25. 合并两个排序的链表 (原地合并)
剑指 Offer 25. 合并两个排序的链表文章目录剑指 Offer 25. 合并两个排序的链表一、自己的思路考察的点:提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、自己的思路这个题如果面试,应该是要考虑原地合并,否则没有考察的必要。思路很简单,既然原地,那就两个指针往后遍历,换指向就好。实现:实现起来需要多加一个dummyhead,这样就清晰很多,用dummyhead原创 2021-06-02 22:47:13 · 279 阅读 · 0 评论 -
【C++】【二叉树】剑指 Offer 26. 树的子结构 (遍历两棵树)
剑指 Offer 26. 树的子结构文章目录剑指 Offer 26. 树的子结构一、自己的思路二、剑指offer 的做法:1.递归遍历考察的点:总结一、自己的思路既然是子树,那么肯定是A包含B进去的。那么就可以遍历A 的时候,找到了和B根节点一样的节点。就开始遍历B节点,同时将A节点做同样的遍历:如果A节点没跟上,就说明:当前A节点向下不包含B树。如果B树都遍历完了,说明A树包含了B树。上面当前A节点向下不包含B树时,需要退出,继续遍历A树,循环往复下去。代码:/** *原创 2021-06-02 22:37:43 · 238 阅读 · 0 评论 -
【C++】【二叉树】二叉树的前、中、后序遍历;迭代、染色法、颜色标记法;
文章目录前言一、颜色标记法二、加强理解1.入栈顺序2. 理解三、引用前言又看了二叉树的遍历的时候,看到了一个大佬的颜色标记法。原文在下面引用处。觉得很有意思,很多经典的迭代方法也是出于这种方法来的。但是颜色标记法,就很容易突破障碍,清晰易懂。一、颜色标记法核心思想如下:使用颜色标记节点的状态,新节点为白色,已访问的节点为灰色。如果遇到的节点为白色,则将其标记为灰色,然后将其右子节点、自身、左子节点依次入栈。如果遇到的节点为灰色,则将节点的值输出。其实只需要一个bool值即可,fa原创 2021-05-29 13:37:30 · 476 阅读 · 0 评论