自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode刷题

计算每个节点的高度,再使用先序遍历,向下递归如果遇到不平衡的子树,直接返回false,如果都遍历完成,返回true。(小trick:不用记录层数来统计是否是最后一层,每一层都保留,那么上一层一定会将下一层覆盖,最后返回即可)另外是否使用回溯:当需要关注具体的路线的时候,需要使用回溯,如果只是需要从整体把握,非回溯就能搞定。不同点在于:求深度是后序遍历,无法知道此节点是否是最左下的。(小trick2:通过右—》左的顺序入队,那么最后一个就是要求的点)而求该题需要关注具体的路线,因此要使用回溯的方法。

2024-04-21 21:52:40 189

原创 leetcode刷题

(自己的理解:像是析构函数,在收回内存后,调用析构函数。而回溯,其实就是我们重写析构函数的过程。回溯,其本质就是递归之后返回的过程。只是需要在返回后,重写一段逻辑。递归中稍稍带有一点回溯,理解了之后并不难。

2024-04-19 20:10:31 156 1

原创 leetcode刷题

和最大深度求法类似,只是需要考虑如果根节点只有一棵子树的时候,不能返回子树的最小值了,应该返回最大的。层序遍历,遇到的第一个叶子节点的深度即为最小深度。(以上两种方法的时间复杂度都是O(n))只是为什么时间复杂度为O(ln*ln)层序遍历法:每遍历一层,深度加一。特殊方法:根据满二叉树的性质计算。

2024-04-18 22:28:23 96 1

原创 leetcode刷题

对于两棵树的遍历递归,其实不用思考的很复杂,只抓住一棵树进行递归就可以,另一棵树作为附属品来进行判断就可以(只需要把另一棵树作为参数传进去就可以了)。方法一太麻烦了,不如直接使用函数1,只是参数传的时候有所不同。是否相同,就要遍历每个节点,看是否匹配,因此核心在于遍历,遍历可以使用递归。遍历主树的每个节点,调用函数1让每个节点和另一个树进行比较。把左子树进行反转,调用函数1,与右子树进行比较。利用层序遍历,用空指针把树填充成满二叉树。对每一层的结果进行判断,看是否为对称。写一个判断两棵树是否相同的函数1。

2024-04-17 21:38:26 179 1

原创 leetcode刷题

对于前序而言,每次访问的元素和要处理的元素都是同一个,所以写起来比较简单。但是对于中序而言,每次访问的还是根节点,但是要处理的并非是根节点,而是要处理左孩子节点。不能简单对前序进行修改来实现,其原因在于:要分清两个概念,即访问和处理。把右孩子压入栈中,把左孩子压入栈中。把前序的代码修改下,然后再把结果进行翻转就可以了。通过栈来实现,先把根节点压入栈中。

2024-04-16 14:59:23 63

原创 leetcode刷题

for循环每遍历一个数字,就在队列中pop出一个数字,再push进一个数字,但是要满足队列是递减的,即,如果即将push进去的数字比队尾元素大,就把队尾元素一个一个pop掉,直到队列为空,或者队列里的元素都比该值要大。需要构建一个单调队列,用来维护这个滑动窗口中“可能” 最大的元素。使用小顶堆,还不是很熟练。

2024-04-16 09:06:43 102

原创 leetcode刷题

遇到左括号就入栈,遇到右括号就出栈,并且判断能否和现有的左括号配对,不匹配返回false。匹配的话,继续循环。比较简单,遇到数字,压入栈中。遇到运算符,出栈两次,根据符号计算结果,把结果压入栈中。获取元素,当元素和栈顶元素不相等时,入栈。如果最后栈不空,则不匹配。最后所有的元素出栈组成字符串,并翻转。最后栈剩一个数,就是最后结果。

2024-04-13 19:19:22 70

原创 leetcode刷题

栈和队列可以由很多底层容器(vector list deque等等)来实现,因此不认为栈和队列是c++的一种容器。熟悉了一些栈和队列的基本操作。用栈实现队列、用队列实现栈。

2024-04-12 13:29:08 402

原创 leetcode刷题

对于kmp算法,了解了处理逻辑。可以代码实现找到next数组。重新回顾了字符串相关内容。其他实现细节还需要再二刷。

2024-04-11 21:09:48 66 2

原创 leetcode刷题

不使用额外的数组,只是在原有数组上进行扩充。之后双指针,i指针在旧数组的末尾向前遍历,j指针在新数组的末尾向前遍历。首先扫描一遍字符串找到数字的个数,然后给新的字符数组分配空间。再扫描数组,遇到字符就复制,遇到数字就把“number”添加进新数组里,最后返回新数组。把数组翻转过来,再把每个单词翻转过来即可。把字符串分成不同的组,然后使用循环对每个组的前k个数字进行翻转。最后处理剩余的字符串。每次都是处理2k个元素,因此可以把for循环的循环内容改为+=2k,这样就不用分组了。最笨的方法是使用额外的空间。

2024-04-10 22:44:45 99 1

原创 leetcode刷题

不应该用multimap,用undered_map,这样可以去重,把前两个数组放入哈希表中,之后value存放重复的次数,也就是相同的和有多少种不同的组合形式。比较简单,直接使用unordered_map哈希表,当然也可以自己通过数组构造哈希表,因为是小写字母,所以设定一个26大小的数组当作哈希表就可以。把前两个数组通过两重for循环合并到一个哈希表中,把后两个数组合并到一个哈希表中。第一时间想到哈希表,但是太复杂了,直接看视频讲解,使用双指针。这样相比第一个算法,减少了一次循环,少用了一个map。

2024-04-09 20:08:54 168

原创 leetcode刷题

题目包含“重复出现”的关键字,于是考虑使用哈希表,使用unordered_set来存放数据。如果最终结果是1,则是快乐数,如果在哈希表中存在,则返回false。遍历数组,每一个元素在哈希表中查找有无补数,没有就加入哈希表,有的话,就再到之前去找。遍历两个字符串,把每个字符串中字符出现的次数统计到哈希表中,最后比较两个哈希表是否相同。备注:关于stl中的容器,还需要再复习下,不同哈希表的用法,也需要再复习下。判断一个数组中某个元素出现的次数,考虑哈希表。本题使用数组作为哈希表。也可以使用数组作为哈希表。

2024-04-08 22:08:42 192

原创 leedcode刷题

求出两条链表的长度,从后端对齐,对齐之后进行遍历,比较两个指针是否相同,相同就是交点。如果遍历到最后都不同,则表示没有交点。在改变值指针的时候,需要注意使用temp指针保存当前进度,否则链表就断了。最笨的方法就是扫描一遍,找到位置,然后再重新连成新的链表。要注意链表单数、双数以及只有一个或两个值的情况。使用虚拟节点操作较为方便一些。

2024-04-06 17:56:01 124 1

原创 leedcode刷题

考察链表的基础知识,相对简单一些。翻转链表可以使用头插法,比较简单。

2024-04-05 22:10:07 107 1

原创 leedcode刷题

感觉该方法比较麻烦,空间复杂度为O(n),时间复杂度满足题目要求为O(n)。2. 找到第一个非负数,使用两个指针分别从两边开始比较绝对值。3. 把较小绝对值的元素存放入新数组中。4. 用新数组把就数组覆盖。1.构造一个新的数组。

2024-04-05 16:56:07 143 1

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

2.对于一些c++的一些函数有些忘了,用到再查吧,比如可以使用.size()方法查看数组大小。1.平时写python习惯了,突然换C++突然不太习惯语法,问题不大。

2024-04-03 22:22:01 155 1

原创 ubuntu安装dronekit报错及解决方案

在Jetson tx2平台下安装dronekitsudo pip install dronekit时,会有如下报错:报错的原因在于python的库安装不完整,所以执行如下命令sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev再执行...

2019-03-25 21:21:39 1188 1

原创 Jetson tx2(ubuntu16.04)编译opencv时出现的问题

在下载完opencv的源码后,进行编译cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..这一步基本不报错,接下来执行make -j4此时就会开始报错,报错信息如下:make: *** No targets specified and no makefile found. Stop搜索...

2019-03-14 20:03:02 949 1

原创 win10环境下anaconda安装opencv(基于python3.7)

计算机视觉小白由于项目需要,接触opencv,记录学习过程中踩过的坑网上找了很多教程,基本都试过了,没有一次性成功的,又结合好多视频教程,尝试了n多次总结了以下亲测好用的方法:(前提电脑需要安装anaconda,这个比较简单,按网上教程来就行)一、上官网找到对应的opencv安装包        点击 https://opencv.org/releases.html      ...

2019-01-19 23:25:48 2912 1

原创 数据结构学习历程

 头文件​#include<stdlib.h>#define LIST_INIT_SIZE 80#define LISTINCREMENT 10typedef int ElemType;typedef struct{ ElemType *elem; int length; int listsize;}SqList;int InitList...

2018-11-09 16:17:47 160

原创 惠普Zx40工作站u盘启动

一   设置U盘引导F10进入BIOS中选择Advanced —Boot Options (可以使用鼠标)  二 将“USB  Media  Boot  Support”选项选择为“  Enable” 三 选择“UEFI Boot Order”或“Legacy Boot Order”选项(具体选择UEFI还是选择Legacy引导方式请根据实际USB镜...

2018-07-04 16:31:10 3037

原创 计算机基础知识

                                                                               内核内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的分类可分为单内核和双内核以及微内核。严格地说,内核并不是计算机系统中...

2018-07-03 17:49:01 227

空空如也

空空如也

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

TA关注的人

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