自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP网络协议栈和Posix网络部分API总结

tcp网络协议栈和posix网络api

2024-03-30 23:25:33 1186

原创 基于reactor模式的简易web服务器

基于epoll和reactor的简易web服务器实现

2024-03-29 10:51:16 925

原创 简易TCP服务器通信、IO多路复用(select、poll、epoll)以及reactor模式。

网络编程学习

2024-03-26 11:26:03 1106

原创 算法学习打卡day47|单调栈系列题目

对于每个 0

2024-02-04 23:06:13 1052

原创 算法学习打卡day46|动态规划:子序列问题

一般情况下一但涉及到连续子数组问题,通常dp数组存的是中间状态,我们需要用result每次取获取结果,而相对顺序的话不需要result,每次取最大值即可。

2023-11-29 18:42:33 389

原创 算法学习打卡day45|动态规划:股票问题总结

算法学习打卡day45|动态规划:股票问题总结

2023-11-15 16:01:59 203 1

原创 算法学习打卡day44|动态规划:打家劫舍问题

算法学习打卡day44|动态规划:打家劫舍问题

2023-11-14 21:31:08 128

原创 算法学习打卡day43|动态规划:背包问题总结

先看这里,后面补下背包问题总结0 - 1背包

2023-11-14 21:30:51 130

原创 算法学习打卡day42|动态规划:0 - 1背包问题

经典0-1背包问题:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。

2023-11-13 12:31:42 144

原创 算法学习打卡day41|栈和队列:栈和队列相互实现、括号匹配、逆波兰表达式、滑动窗口最大值问题、求前 K 个高频元素

算法学习打卡day41|栈和队列:栈和队列相互实现、括号匹配、逆波兰表达式、滑动窗口最大值问题、求前 K 个高频元素

2023-11-07 17:49:41 190

原创 算法学习打卡day40|343. 整数拆分、96.不同的二叉搜索树

算法学习打卡day40|343. 整数拆分、96.不同的二叉搜索树

2023-11-01 20:51:22 145

原创 算法学习打卡day39|动态规划:62.不同路径 、 63. 不同路径 II

动态规划:62.不同路径 、 63. 不同路径 II

2023-10-31 21:29:23 717

原创 算法学习打卡day38|动态规划初探、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划初探、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

2023-10-31 21:03:54 213

原创 算法学习打卡day36| 738.单调递增的数字、 968.监控二叉树、贪心算法阶段学习总结

贪心算法学习总结

2023-10-28 18:55:56 312

原创 算法学习打卡day35|贪心算法之重叠区间问题:435. 无重叠区间、763.划分字母区间、56. 合并区间

贪心算法之重叠区间问题:435. 无重叠区间、763.划分字母区间、56. 合并区间

2023-10-27 12:18:08 466

原创 算法学习打卡day34|860.柠檬水找零、406.根据身高重建队列 、452. 用最少数量的箭引爆气球

贪心算法:柠檬水找零、身高重建、用最少数量箭引爆气球

2023-10-26 18:08:22 191

原创 算法学习打卡day33|贪心算法:1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

贪心算法:加油站、分糖果

2023-10-25 22:25:26 196

原创 算法学习打卡day32| 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

贪心算法:122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

2023-10-24 21:15:09 77

原创 算法学习打卡day31|贪心算法、455.分发饼干、 376. 摆动序列、53. 最大子序和

贪心算法

2023-10-24 21:14:19 106

原创 算法学习打卡day29|回溯算法总结

回溯算法题目总结

2023-10-24 21:13:56 429

原创 linux下C++开发环境搭建(ubuntu18.04)

linux环境搭建,后序会及时补充

2023-10-23 20:32:14 182

原创 算法学习打卡day25|组合问题3、电话号码的字母组合

回溯算法,组合问题

2023-10-18 22:10:51 119 1

原创 算法学习打卡day24|回溯算法初探,组合问题

回溯算法,组合问题 :给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。

2023-10-16 21:21:39 83 1

原创 算法学习打卡day23|二叉树题目总结

int val;什么时候递归函数前加if判断?一般情况来说:如果让空节点(空指针)进入递归,就不加if,此时对于空节点的判断交给函数的退出条件那里了,如果不让空节点进入递归,就加if限制一下, 终止条件也会相应的调整。递归函数什么时候需要返回值,什么时候不需要?如果需要搜索整棵二叉树且不用处理递归返回值,递归函数就不要返回值。(113.路径总和ii)如果需要搜索整棵二叉树且需要处理递归返回值,递归函数就需要返回值。(二叉树的最近公共祖先)

2023-10-15 16:02:27 197 1

原创 算法学习打卡day22| 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]解释:[0,-10,5,null,-3,null,9]输出:[0,-3,9,-10,null,5]

2023-10-14 19:42:13 134 1

原创 算法学习打卡day21|二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]输入:root = [4,2,7,1,3], val = 5。

2023-10-13 21:26:44 121

原创 算法学习打卡day20|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1。给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。

2023-10-13 20:46:10 71

原创 算法学习打卡day19|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。输出:[6,3,5,null,2,0,null,null,1]输出:[3,4,5,5,4,null,7]节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。

2023-10-12 22:58:54 34

原创 算法学习打卡day18|513.找树左下角的值、112. 路径总和、106.从中序与后序或前序遍历序列构造二叉树

判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。迭代法:和求所有叶子路径那道题类似,用前序遍历(因为从根节点走),然后把路径和存起来,遇到叶子节点就判断,如果是。给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。叶子节点 是指没有子节点的节点。

2023-10-12 22:13:43 144

原创 算法学习打卡day17|110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。输入:root = [3,9,20,null,null,15,7]一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。给定二叉树的根节点 root ,返回所有左叶子之和。给定一个二叉树,判断它是否是高度平衡的二叉树。叶子节点 是指没有子节点的节点。

2023-10-12 12:18:22 64

原创 算法学习打卡day15 |104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。输入:root = [2,null,3,null,4,null,5,null,6]二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。输入:root = [3,9,20,null,null,15,7]输入:root = [3,9,20,null,null,15,7]输入:root = [1,null,2]说明:叶子节点是指没有子节点的节点。

2023-10-12 11:05:24 135

原创 算法学习打卡day14|层次遍历扩展题、二叉树翻转、对称二叉树

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。给你一个二叉树的根节点 root , 检查它是否轴对称。输入: [1,2,3,null,5,null,4]输入:root = [4,2,7,1,3,6,9]输入:root = [1,2,2,3,4,4,3]输出:[4,7,2,9,6,3,1]输出: [1,3,4]

2023-10-12 10:19:04 43

原创 算法学习打卡day13 | 二叉树的遍历(前、中、后序、层次)

给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。

2023-10-10 23:32:33 60 1

原创 算法学习打卡day4|合并两个有序链表、合并k个有序链表、19.删除链表的倒数第N个节点、寻找单链表的中点、链表相交、142.环形链表II

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。输入:lists = [[1,4,5],[1,3,4],[2,6]]给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4,5,6]

2023-10-01 19:28:06 765 1

原创 算法学习打卡day3 |203.移除链表元素、707.设计链表、24. 两两交换链表中的节点、206.反转链表、92. 反转链表 II、25. K 个一组翻转链表

void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

2023-09-29 17:56:52 836

原创 算法学习打卡day7 | 344.反转字符串、 541. 反转字符串II、 剑指Offer 05.替换空格、 151.翻转字符串里的单词、 剑指Offer58-II.左旋转字符串

给你一个字符串 s ,请你反转字符串中 单词 的顺序。现需将路径加密,加密方法为将 path 中的分隔符替换为空格 " ",请返回加密后的字符串。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]输入:s = “abcd”, k = 2。

2023-09-28 22:21:15 363

原创 算法学习打卡day6|454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

当需要判断一个元素是否在集合中或者一个元素是否出现过的时候当需要去重的时候,要想到用哈希表哈希函数是用来计算哈希key值的,用来唯一标识一个数据哈希碰撞是指哈希函数计算出的key值相同导致访问冲突,怎么解决?线性探测法和拉链法线性探测法需要数组足够大,起码足够容纳数据,拉链法是将同key的数据用链表链接起来.242.有效的字母异位词383. 赎金信,两道题类似的做法。当数据量很大时,不适合使用数组,主要因为如下两点:数组的大小是有限的,受到系统栈空间(不是数据结构的栈)的限制。

2023-09-26 22:01:45 830 1

原创 算法学习打卡day5|242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

由于一个元素不能重复出现,我们可以直接遍历元素,然后在哈希表中寻找,是否存在(target-当前值)这个数字,存在就直接返回,不存在可以把当前元素添加到哈希表中,因为题目要求返回下标,那么我们可以使用map的value来记录下标值。那么,我们可以利用数组下标标识26个英文字母,然后存储每个字母的次数,首先遍历s,统计出每个字母的次数,然后遍历t,在数组中依次减去对应字母出现的次数,这样最后得到的数组如果每项都为0,即为所求结果。输入:nums1 = [1,2,2,1], nums2 = [2,2]

2023-09-25 23:18:57 951 1

原创 数组部分算法学习总结

数组部分算法学习总结

2023-09-21 15:30:54 50

原创 day2算法学习打卡 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

数组双指针法练习和螺旋数组打印

2023-09-21 14:41:38 1445

空空如也

空空如也

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

TA关注的人

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