- 博客(74)
- 收藏
- 关注
原创 libwebsockets实现异步websocket客户端,服务端异常断开可重连
websocket客户端基本流程网上都有,我只额外优化了重连机制。通过定时检查链接是否可写入判断链接是否有效。
2025-03-11 11:52:42
454
原创 Github Codespaces Cmake项目使用
参考:GitHub Codespaces 概述开发容器简介VSCODE配置使用cmake构建c++项目
2024-09-06 11:28:54
343
原创 day 30 第七章 回溯算法part06
关键是怎么实现起始机场与到达机场的映射,并且具有字典序。● 51. N皇后 棋盘行就是深度,棋盘列就是广度。判断列,45度角,135度角是否存在皇后。终止条件就是遍历到最后一行。需要判断棋格放皇后是否有效。● 332.重新安排行程。● 332.重新安排行程。
2024-05-14 11:49:26
291
1
原创 day 29 第七章 回溯算法part05
关键是需要去重,重复出现是因为同层取用了相同值的元素,通过对数组排序使相同元素相邻,借助数组标记使用过的元素位置从而判断是否去重。排列有顺序,[1,2] [2,1]是不同的,所以每层都需要从头遍历整个数组。麻烦的点在于去重的判断,已经不能遗漏过程中产生的子集。遍历的时候需要避开已经取用过的元素。
2024-05-13 12:14:06
355
原创 day 27 第七章 回溯算法part03
回溯不好在脑海里硬想,多动手画一次树形结构,这样分析回溯逻辑就更方便了。● 40.组合总和II。● 131.分割回文串。● 40.组合总和II。● 131.分割回文串。● 39. 组合总和。● 39. 组合总和。
2024-05-11 14:15:39
336
原创 day 24 第七章 回溯算法part01
子集问题:一个N个数的集合里有多少符合条件的子集。排列问题:N个数按一定规则全排列,有几种排列方式。组合问题:N个数里面按一定规则找出k个数的集合。切割问题:一个字符串按一定规则有几种切割方式。本质上还是穷举遍历,伴随着递归。棋盘问题:N皇后,解数独等等。
2024-05-10 15:05:05
338
原创 day 23 第六章 二叉树part09
● 108.将有序数组转换为二叉搜索树。● 108.将有序数组转换为二叉搜索树。● 538.把二叉搜索树转换为累加树。● 538.把二叉搜索树转换为累加树。● 669. 修剪二叉搜索树。● 669. 修剪二叉搜索树。
2024-05-10 11:58:25
337
原创 day 22 第六章 二叉树
● 235. 二叉搜索树的最近公共祖先。● 235. 二叉搜索树的最近公共祖先。● 701.二叉搜索树中的插入操作。● 450.删除二叉搜索树中的节点。● 701.二叉搜索树中的插入操作。● 450.删除二叉搜索树中的节点。
2024-05-09 16:08:01
269
原创 day 21 第六章 二叉树part07
● 530.二叉搜索树的最小绝对差。● 236. 二叉树的最近公共祖先。● 530.二叉搜索树的最小绝对差。● 236. 二叉树的最近公共祖先。● 501.二叉搜索树中的众数。● 501.二叉搜索树中的众数。
2024-05-09 14:29:25
279
原创 day 20 第六章 二叉树 part06
二叉搜索树本质是上有序数组,关键就在于有序。● 700.二叉搜索树中的搜索。● 700.二叉搜索树中的搜索。● 98.验证二叉搜索树。● 98.验证二叉搜索树。● 654.最大二叉树。● 617.合并二叉树。● 654.最大二叉树。● 617.合并二叉树。
2024-05-08 18:46:02
351
原创 day 18 第六章 二叉树 part05
● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树。关键是递归逻辑的书写,要明确前中后序遍历的逻辑,套进递归里。● 112. 路径总和 113.路径总和ii。● 106.从中序与后序遍历序列构造二叉树。105.从前序与中序遍历序列构造二叉树。● 513.找树左下角的值。● 513.找树左下角的值。● 112. 路径总和。113.路径总和ii。
2024-05-08 16:36:20
294
原创 day 17:第六章 二叉树part04
掌握递归的思考过程● 110.平衡二叉树● 257. 二叉树的所有路径● 404.左叶子之和● 110.平衡二叉树/*110. 平衡二叉树简单给定一个二叉树,判断它是否是平衡二叉树一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。/** 返回值深度,传入节点* 终止条件:节点空* 单层递归逻辑:左子节点递归,右子节点递归,返回深度加一,如果判断出节点高度大于1,返回-1,说明不是平衡二叉树*/
2024-04-19 16:30:29
320
原创 day 16:第六章 二叉树part03
自我感觉层序遍历用起来更简单,递归法更难理解。递归法最好写出三要素再写代码● 104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数● 104.二叉树的最大深度 559.n叉树的最大深度/*104. 二叉树的最大深度简单给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。/** 迭代方法,类似层序遍历。
2024-04-18 16:35:33
272
原创 day 15:第六章 二叉树 part02
主要学习了层序遍历(1.借助队列迭代。2.递归)● 层序遍历 10十道题,均可用层序遍历的思想完成(1.借助队列迭代。2.递归)● 226.翻转二叉树我使用的层序遍历的方法对左右节点进行反转,还可以使用递归,递归的时候需要注意用何种顺序进行遍历● 101.对称二叉树 2本质上是要对左右子树分别遍历,并且遍历顺序相反,借助递归法实现● 层序遍历 10102.二叉树的层序遍历/*102. 二叉树的层序遍历中等给你二叉树的根节点 root ,返回其节点值的 层序遍历。
2024-04-18 15:20:26
319
原创 ●day 14:第六章 二叉树part01
递归与迭代的区别,递归频繁调用自身,迭代频繁循环判断二叉树遍历方式,深度优先(前序,中序,后序)● 递归遍历● 迭代遍历● 统一迭代(未学习)/*144. 二叉树的前序遍历简单给你二叉树的根节点 root ,返回它节点值的 前序 遍历。* };*/int val;return res;/** 迭代遍历,用栈实现*/if(!while (!
2024-04-16 14:41:07
252
原创 ●day 13:第五章 栈与队列part03
单调队列的实现,优先级队列的使用● 239. 滑动窗口最大值● 347.前 K 个高频元素● 239. 滑动窗口最大值/*239. 滑动窗口最大值困难提示给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值。
2024-04-15 18:10:45
401
原创 day 11:第五章 栈与队列part02
题目要求查找的元素符合先入后出特点(相邻,按顺序匹配)保证不重复(需要把使用过的元素删除)● 20. 有效的括号● 1047. 删除字符串中的所有相邻重复项● 150. 逆波兰表达式求值● 20. 有效的括号/*20. 有效的括号简单提示给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。
2024-04-15 12:11:00
271
原创 day10: 第五章 栈与队列part01
栈与队列在c++中都是容器适配器,实现的底层是vector deque这些容器。理解先进先出与先进后出● 理论基础● 232.用栈实现队列● 225. 用队列实现栈● 232.用栈实现队列/** 232. 用栈实现队列简单请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素。
2024-04-12 11:52:32
272
原创 day8字符串part01
反转问题要活用双指针法,有效减少额外空间的使用344.反转字符串● 541. 反转字符串II● 卡码网:54.替换数字● 151.翻转字符串里的单词● 卡码网:55.右旋转字符串344.反转字符串/*344. 反转字符串简单提示编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。right -=1;
2024-04-11 15:22:59
322
原创 day7:哈希表学习
对于查,某个元素是否在集合中出现过,哈希法是非常高效的方法但是对于需要去重的情况下,哈希法要注意太多细节,很难完美写完,因此采用双指针法,更便于去重● 454.四数相加II/*454. 四数相加 II中等给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:*/public:/** 暴力解法四层for循环,显然时间复杂度很高。
2024-04-10 16:01:25
220
原创 day3: 链表
链表增删时较为方便,做题时多画图● 203.移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。//释放删除节点} else //遍历return res;● 707.设计链表你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val 和 next。
2024-04-08 18:13:49
291
原创 day2:双指针,滑动窗口,模拟行为
数组不方便进行位置上的变动,双指针法可以将大量比较简化成两两比较,滑动窗口需要注意区间的选择及两端移动的条件,在有多重循环时需要注意循环不变量,找准循环区间。
2024-04-07 15:49:44
354
原创 算法学习第一天-二分法及双指针法
文章讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html。文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html。题目链接:https://leetcode.cn/problems/binary-search/数组理论基础,704. 二分查找,27. 移除元素。
2024-04-03 18:15:42
245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人