自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 聊天室项目Day3之服务器的http的get和post回复实现

三.在HttpConnection类中实现检查连接是否超时和解析对应的http文件,将解析的请求通知给不同的模块,这里要注意的是当接收到Post的请求时,发送给LogicSystem,LogicSystem再调用VerifyGrpcClient类中的grpc发送验证码服务。同时引入概念-----------------------------------------------节。[Database];它类似于文件系统中的“文件夹”,或者代码中的“命名空间”。管理一个节的键值对,

2025-04-07 11:31:52 305

原创 聊天室项目之http知识

其中URL统一资源定位符,也就是平常说的网址,我们在接受读取参数前要对其进行编码和解码,因为为其没有中文字符,如果直接读取会导致读取错误。1.起始行:请求------------------------一.http的核心组成部分(都分成请求的和响应的):URL 路径和查询字符串(如。响应————————————:设置客户端 Cookie。:分隔头部和消息体,仅包含。:请求体的数据类型(如。4.消息体(Body)

2025-04-05 11:58:59 437

原创 聊天室项目Day2

5.通过上面的代码实现请求http服务器的功能,请求完要发送给别的模块并且发送信号传送给别的界面,在这里对注册页面进行完善接受到Http请求服务完的信息的操作。4.实现对应的函数,函数的对应功能在注释写了,主要实现了设置发送http请求并且发送给服务器然后通知别的模块。2.用模板类实现单例模式的httpMgr能确保全局只有一个地方能够能够访问请求资源,并且避免混乱。1.完善global头文件,将要用到的头文件全丢里面,并且设置各个模块的标记与其对应值。8.将回调的函数调用,防止没有初始化。

2025-04-03 11:23:08 157

原创 全栈聊天室项目实现Day1

3.将获取验证码的按钮接受其点击,接受到信号后就用正则表达式实现验证格式是否合格,如果不合格就改变err_tip的状态,使其变红来提醒,代码如下。界面要实现类似QQ的登录和注册技术,第一天暂时实现了登录界面和注册界面的验证邮箱是否正确的功能,其余还未实现。2编写.qss文件,同时设置邮箱输入时错误提示的参数err_tip。4.添加头文件global,在其中添加。7.优化后各个页面的状态和错误提示状态。利用qss技术实现界面的优化。如上实现了页面的跳转。一.界面实现(Qt)

2025-04-02 11:12:31 303

原创 Qt学习day2

2.exec()函数会返回两种返回值,一个是accepted,一个是否定,常用于一个页面接受点击后判断返回值然后进行接下来的操作。写在开头--------------学习自一位大佬的博客。颜色对话框用来选择颜色,创建后会显示各种颜色和透明度信息。1.用exec()展示的界面就是模块的对话框。

2025-04-02 08:17:24 254

原创 QT学习day1

实际上和网络编程的回调函数很像,说到底还是懂C++就能看懂,不过要学精,如果单纯看过黑马程序员的教程,那估计是看不懂的,要深入学。注意点:在子页面返回主页面的时候要存储主页面的信息节点,不要通过增加私有变量的方法来实现,因为这样会增加耦合性,要通过设置一个获取主页面信息节点的函数来实现。例子:创建一个子类页面,在其中创建一个按键,要求按这个键就返回主页面,在主页面也有一个按键,一按就返回子页面。实现思路:连接按钮和槽函数,一但检测到接受到点击的信号,就调用对应的槽函数。

2025-03-31 23:28:30 367

原创 VScode中CMake无高亮(就是没有补全的提示)

原因就是:本地没有配置环境变量,解决方法是下一个cmake然后直接配置环境变量。在我学的过程中我发现我的CMake是这样的,如下图。这非常的难受,所以疯狂的找,最后是CMake报错有。如何配置环境变量就直接上网找就好了,很简单的,加油。但在教学视频里是这样的(如下图)

2024-10-15 20:46:17 687

原创 子集II(力扣90)

其中可能包含重复元素,请你返回该数组所有可能的。解题思路:used判断是否出现过,然后遍历就好了。返回的解集中,子集可以按。

2024-05-06 16:54:23 551

原创 子集(力扣78)

解题思路:把每一个遍历过的节点都收集下来就可以了。返回该数组所有可能的。

2024-05-06 16:49:44 269

原创 还原IP地址(力扣93)

和分割回文数大致一样,都是在叶子节点收集结果,不过这里要多定义一个用来判断是否合格的函数,并且收集规则是插入完三个节点后再判断收集,同时注意每次开始时要在两位之后因为插入了.if (s[i] > '9' || s[i] < '0') { // 遇到非数字字符不合。if (num > 255) { // 如果大于255了不合法。,用以表示一个 IP 地址,返回所有可能的。正好由四个整数(每个整数位于。之间组成,且不能含有前导。给定一个只包含数字的字符串。,这些地址可以通过在。

2024-05-06 16:44:07 749

原创 分割回文串(力扣131)

else { // 不是回文,跳过。if (isPalindrome(s, startIndex, i)) { // 是回文子串。// 寻找i+1为起始位置的子串。// 回溯过程,弹出本次已经添加的子串。解题思路:仍就是上递归三部曲,但于此同时要明白此时的index就可以作为切割回文串的线了。// 获取[startIndex,i]在s中的子串。// 如果起始位置已经大于s的大小,说明已经找到了一组分割方案了。// 放已经回文的子串。

2024-05-04 20:36:51 542

原创 组合总和2(力扣40)

解题思路:因为这里不能有重复的组合,所以采取用下表used来判断其是否在前面出现过,如果出现过就直接跳过,同时判断是树层重复还是树枝重复,如果是树枝重复就不用跳过。中的每个数字在每个组合中只能使用。给定一个候选人编号的集合。解集不能包含重复的组合。中所有可以使数字和为。

2024-05-04 20:31:22 698

原创 力扣39(组合总和)

解题思路:没有什么特殊的,按照递归三部曲确定返回值与参数,确定终止条件,确定单层循环的逻辑就可以解出来。2 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。如果至少一个数字的被选数量不同,则两种组合是不同的。7 也是一个候选, 7 = 7。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。

2024-05-04 20:27:42 615

原创 删除二叉搜索树的节点(450)

但有一个孩子的时候直接返回孩子的地址,让当前节点的父节点直接指向孩子节点就好,然后释放当前节点,如果有左右孩子的话就要选择把其中一方连接到另一子数的下面。1,在叶子节点位置删除 2,在有左孩子没右孩子时的删除 3,在有右孩子没有左孩子时候的删除 4没有找到 5左右孩子都有时候的删除。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。另一个正确答案是 [5,2,6,null,4,null,7]。

2024-04-25 16:35:35 875

原创 二叉搜索树中的插入操作(力扣450)

解题思路:因为是二叉搜索树,所以肯定有一个位置的叶子节点可以直接插入,我们只需要递归遍历找到位置罢了。确认终止条件:遍历到空时停止,同时创建新节点,返回新节点,让下一个节点接着。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。,新值和原始二叉搜索树中的任意节点值都不同。给定二叉搜索树(BST)的根节点。

2024-04-25 16:29:26 428

原创 二叉搜索树最近的公共先祖(力扣235)

中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(解题思路:第一是直接按二叉树的最近公共先祖来做,第二是利用二叉搜索树的特性,从上到下遍历。如果大了就遍历左边,如果小了就遍历右边。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。, 因为根据定义最近公共祖先节点可以为节点本身。

2024-04-25 16:18:11 405

原创 二叉树的最近公共祖先(力扣236)

解题思路:想法当然是从下往上记,如果碰到了就返回,那么很明显就要用后序遍历来做,递归三部曲:确定函数返回值已经参数,确定终止条件,确定单层递归的逻辑。中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(if(root==p||root==q)return root;给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

2024-04-24 20:54:12 280 3

原创 二叉搜索树的众数(力扣501)

解题思路如下:直接暴力的算法就是遍历一遍树然后用map记录,最后再对map里的频率进行排序。但是这颗树是二叉搜索树,所以我们要利用好特性,在中序遍历的同时,设置变了count和maxTime来记录下出现的次数,其中当count大于maxTime时就可以动态改变最大值,而当相等时就把该数弹进容器里。}//是空的话说明cur遍历到叶子了。给你一个含重复值的二叉搜索树(BST)的根节点。,找出并返回 BST 中的所有。(即,出现频率最高的元素)。

2024-04-24 20:49:56 631

原创 二叉搜索树最小绝对差

解题思路:因为二叉树是二叉搜索树,所以我们可以得知差最小的数一定是它相邻的数,所以我们可以采用中序遍历把每个元素都放进vector中再进行相减比较,但是这样就会消耗额外的空间,所以我们可以采取我们的老朋友双指针来做。让一个pre指针指向cur上一次指向的位置然后相减再和最小值比较,在中序遍历处。差值是一个正数,其数值等于两值之差的绝对值。给你一个二叉搜索树的根节点。

2024-04-24 20:43:06 239

原创 验证二叉搜索树(98)

解题思路:可以直接中序遍历放进一个数组里根据特性判断是否是递增就可以,如果采用递归的思路话用中序遍历和创建一个指针指向前一个节点,根据前一个节点是否比上一个节点小来判断是否是二叉树。根节点的值是 5 ,但是右子节点的值是 4。,判断其是否是一个有效的二叉搜索树。给你一个二叉树的根节点。

2024-04-22 21:10:14 291

原创 二叉搜索树中的搜索(力扣700)

解题思路:因为二叉搜索树的左小右大特点,中只是寻找比较目标,怎么序遍历都可以,终止条件就是遍历完毕和找到了,然后就遍历左右子树开始寻找就好了。返回以该节点为根的子树。如果节点不存在,则返回。你需要在 BST 中找到节点值等于。给定二叉搜索树(BST)的根节点。

2024-04-22 21:06:29 540

原创 合并二叉树(力扣617)

解题思路:实现两个二叉树同时递归遍历,遇到一方为空时就把另一方不为空的相同位置返回,所以这里特殊的是停止递归条件隐藏在上面,如果返回的是空值时自然不法继续进行(前提条件,前序遍历和在第一个二叉树上面构造最新的一颗二叉树)想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。

2024-04-22 21:02:48 341

原创 最大二叉树(力扣654)

[3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 []。- 只有一个元素,所以子节点是一个值为 1 的节点。- 只有一个元素,所以子节点是一个值为 0 的节点。- 空数组,无子节点。- 空数组,无子节点。

2024-04-22 20:58:17 1409

原创 从中序后序构造二叉树(力扣106)

这题我也不太会敲,暂时只懂个思路。

2024-04-21 11:34:38 122

原创 路径总和(力扣112)

if(root->right){//向右遍历。if(root->left){//先左遍历。不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。等于目标和的根节点到叶节点路径如上图所示。

2024-04-21 11:32:57 421

原创 513.找树左下角的值

解题思路:用层序遍历。从右遍历到左最好一个肯定是。假设二叉树中至少有一个节点。

2024-04-21 11:29:32 268

原创 左叶子之和(力扣404)

解题思路:用后序遍历找左孩子,需要注意的是左叶子需要通过其父节点来判断其是不是左叶子。在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。,返回所有左叶子之和。

2024-04-21 11:27:43 368

原创 二叉树的所有路径(力扣257)

解题思路:因为求的是路径,从根节点开始,所以采用中序遍历。并且要记录下路径,我们还要额外采用一个临时存放一条路径的容器,当遍历完一条时放入result中,再遍历另一条,这里采用的就是回溯了。// 中,中为什么写在这里,因为最后一个节点也要加入到path中。if (cur->right) { // 右。if (cur->left) { // 左。// 这才到了叶子节点。,返回所有从根节点到叶子节点的路径。是指没有子节点的节点。

2024-04-21 11:22:04 537

原创 平衡二叉树(后序遍历,力扣110)

解题思路:采取后序遍历的好处是先遍历节点得到高度,然后再判断高度差是否大于一,如果是的话就返回-1,不是就返回两高度中较大的高度加一就是父节点的高度。给定一个二叉树,判断它是否是。

2024-04-20 09:38:58 675 2

原创 完全二叉树(力扣222)

的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。解题思路:第一种是直接全部都遍历一遍,第二种是用完全二叉树的特殊性,判断是不是满二叉树,来节省时间和空间复杂度。,求出该树的节点个数。

2024-04-18 17:57:07 379

原创 二叉树的最小深度(力扣111)

解题思路如下:该题和最大深度类似,但有坑,就比如当左子树或右子树一方为空而其他一方不为空时,如果不特殊判断的话就会倒置返回0;最大深度求法可以看我主页中之前发的。具体代码实现:(图片来源代码随想录)

2024-04-18 17:53:39 278 2

原创 找到二叉树最大深度(力扣104)

解题思路:分别是用前序遍历和后序遍历,前序遍历就是正常的从上到下求深度,而后续遍历就是从下到上求高度,而高度和深度是互逆的,所以这里采用后续遍历,需要注意的是,最底层是从1开始的,所以遍历到底部时记录的高度时1+遍历。是指从根节点到最远叶子节点的最长路径上的节点数。

2024-04-18 17:49:36 449

原创 判断二叉树是否对称

解题思路:首先判断特殊情况,比如左右子树是否为一空一有,是否为两空,是否相等,然后递归判断外侧是否相等(即为左子树的左节点和右子树的右节点)和内侧是否相等(即为右子树的左节点和左子树的右节点)给你一个二叉树的根节点。, 检查它是否轴对称。

2024-04-17 20:44:10 267

原创 反转二叉树(力扣226)

解题思路:用队列进行前序遍历的同时把节点的左节点和右节点交换。

2024-04-17 20:39:13 594

原创 二叉树层序遍历

解题思路:因为二叉树本身不肯用来遍历,所以我们采取用队列来模拟二叉树的方法遍历二叉树,原理是把二叉树的节点放入队列中,并且设置size来控制每次的弹出,以此来分辨每次的输出到底是第几层的东西。具体代码如下:(图片来源,代码随想录)

2024-04-17 20:35:28 271

原创 二叉树递归遍历

2024-04-16 19:27:54 143

原创 优先级队列(力扣347,前k个高频元素)

大体思路:用map记录下来然后再快排,当然这样时间复杂度过高,我们也可以采用优先队列的方法。还没整懂pair那些基本的东西,这个补完知识点再弄。

2024-04-15 16:45:46 416

原创 滑动窗口最大值(力扣239)

解题思路:首先是用暴力循环来解,其次便是用队列来模拟这个滑动窗口,同时要自定义三个函数,一个pop用来弹出来保证滑动窗口的移动,同时我们把最大的放在队列口那里,当每次有更大的就把原来的挤出栈外,一个push用来把前面不够大的元素排挤出队列并且把最大的那个数压入队列,还有一个find来找到最大的元素。

2024-04-15 11:19:43 843

原创 删除字符串中两个相邻字符(力扣1047)

result.empty()) { // 将栈中元素放到result字符串汇总。// 此时字符串需要反转一下。解题思路:匹配的题用栈来做,这里用一个栈遍历支付串,遇到相同的就弹出去,最后再把栈转换成字符。在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作,直到无法继续删除。会选择两个相邻且相同的字母,并删除它们。给出由小写字母组成的字符串。

2024-04-14 15:24:21 251

原创 有效括号,力扣20题

解题思路如下:利用栈,找到向左开的括号,然后把对应的右括号放入栈中,然后对遍历的号进行匹配,如果和栈顶的括号相同,则通过,不相同的话就直接退出,并且考虑到是一左一右,所以字符串的长度要是个偶数,不是的话就直接跳过,同时不符合条件一共有三种可能 1. 左括号多了,2 右括号多了,3 括号不匹配,if(s.size()%2!//判断长度是否为奇数,是的话就肯定错。,判断字符串是否有效。

2024-04-14 14:41:38 465

空空如也

空空如也

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

TA关注的人

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