自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王飞的博客

版权所有,转载请注明。

  • 博客(181)
  • 资源 (4)
  • 收藏
  • 关注

原创 手撕算法-有效的括号

使用栈,如果是左括号,入栈,如果是右括号,判断栈是否为空,不是空出栈并校验是否匹配,不匹配返回false。最后如果栈为空,返回true。

2024-04-01 20:15:36 300

原创 手撕算法-跳跃游戏

【代码】手撕算法-跳跃游戏。

2024-03-29 21:08:04 384

原创 死锁-写一个死锁的例子

在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。

2024-03-26 21:29:45 590

原创 手撕算法-数组中的第K个最大元素

使用小根堆,堆元素控制在k个,遍历数组构建堆,最后堆顶就是第K个最大的元素。

2024-03-26 21:27:52 367 1

原创 手撕算法-二叉树的层序遍历

层序遍历,需要用到队列。

2024-03-24 16:46:03 257

原创 手撕算法-二叉树的层平均值

二叉树的层序遍历。层序遍历需要用到队列。

2024-03-24 16:31:35 224

原创 手撕算法-爬楼梯

一维动态规划。初始状态:返回值:dp[n];

2024-03-24 16:09:16 269

原创 手撕算法-两数之和

暴力。直接看代码。

2024-03-24 15:21:31 221

原创 手撕算法-最小覆盖子串

滑动窗口。参考力扣官方的题解思路本问题要求我们返回字符串 s 中包含字符串 t 的全部字符的最小窗口。我们称包含 t 的全部字母的窗口为「可行」窗口。我们可以用滑动窗口的思想解决这个问题。在滑动窗口类型的问题中都会有两个指针,一个用于「延伸」现有窗口的 r 指针,和一个用于「收缩」窗口的 l 指针。在任意时刻,只有一个指针运动,而另一个保持静止。我们在 s 上滑动窗口,通过移动 r 指针不断扩张窗口。当窗口包含 t 全部所需的字符后,如果能收缩,我们就收缩窗口直到得到最小窗口。

2024-03-24 15:06:26 415

原创 手撕算法-最小覆盖子串

滑动窗口。参考力扣官方的题解思路本问题要求我们返回字符串 s 中包含字符串 t 的全部字符的最小窗口。我们称包含 t 的全部字母的窗口为「可行」窗口。我们可以用滑动窗口的思想解决这个问题。在滑动窗口类型的问题中都会有两个指针,一个用于「延伸」现有窗口的 r 指针,和一个用于「收缩」窗口的 l 指针。在任意时刻,只有一个指针运动,而另一个保持静止。我们在 s 上滑动窗口,通过移动 r 指针不断扩张窗口。当窗口包含 t 全部所需的字符后,如果能收缩,我们就收缩窗口直到得到最小窗口。

2024-03-24 15:04:58 280

原创 手撕算法-长度最小的子数组

滑动窗口。窗口内的和大于等于tatger时,记录此时的长度,并比较是不是最小长度。窗口左边界右移,直到窗口内的和小于tatger。窗口内的和小于tatger时,窗口右边界右移。

2024-03-24 14:08:32 168

原创 手撕算法-两数之和 II - 输入有序数组

已经排序的数组。可以利用双指针,分别指向数组的头尾。计算连个指针位置的数的和sum,如果 sum > target 右指针左移,sum会变小;如果 sum < targer ,左指针右移,sum会变大;移动直到 sum == target。

2024-03-24 13:47:54 112

原创 手撕算法-盛最多水的容器

两个板之间能盛下的水的量,取决于短板。想让两个板之间能盛下更多的水,需要改变短板的长度。就像水桶效应:那么用两个指针指向容器的两个板,然后每次移动较短的板即可。移动较短的板,可能会增大容积,移动较长的板,一定会减小容积。

2024-03-24 13:37:00 257

原创 手撕算法-判断子序列

双指针。指针i指向s的第一个字符,指针j指向t的第一个字符。比较指针i和j位置的字符,如果相等,同时移动指针,i++,j++;如果i和j位置的字符不相等,只移动j,即j++;当i先走到s结尾,直接返回true,代表s是t的子序列。当j走到结尾,看i是不是结尾,如果不是,代表s不是t的子序列。

2024-03-24 13:14:10 207

原创 手撕算法-三数之和

排序+双指针直接看代码。

2024-03-23 16:53:10 213

原创 手撕算法-接雨水

i位置能积累的雨水量,等于其左右两边最大高度的最小值。为了能获取i位置左右两边的最大高度。使用动态规划。其中填充这两个dp数组。遍历所有位置,即可得到总共能接的雨水数。

2024-03-23 16:46:38 2338 3

原创 手撕算法-买卖股票的最佳时机 II(买卖多次)

使用动态规划。dp[i][0] 代表 第i天没有股票的最大利润dp[i][1] 代表 第i天持有股票的最大利润状态转移方程为:// 前一天没有股票,和前一天有股票今天卖掉的最大值// 前一天没有股票今天买,和前一天也有股票的最大值初始状态:// 第一天不持有股票// 第一天持有股票,需要减去第一天的股票价格返回值:// 最后一天必须卖掉股票。

2024-03-23 15:46:37 206

原创 手撕算法-买卖股票的最佳时机(买卖一次)

只能买卖一次。希望在最低处买,最高处卖。怎么判断最低处?遍历时存储已遍历的最小值。怎么判断最高处?遍历时,比较当前位置和最小值的差,取较大的。

2024-03-23 15:27:52 165

原创 手撕算法-删除有序数组中的重复项 II

例如:输入:nums = [1,1,1,2,2,3]输出:5, nums = [1,1,2,2,3]解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。不需要考虑数组中超出新长度后面的元素。

2024-03-23 15:04:53 184

原创 手撕算法-删除有序数组中的重复项

很简单,就是,遇到重复的,只留一个,保存在数组的左半边。如:变为。

2024-03-23 14:29:04 227

原创 手撕算法-删除链表的倒数第 N 个结点

快慢指针,快指针先走N步,走不够N步返回空。慢指针和快指针一起走,当快指针到达终点,即快指针为null时,慢指针到达倒数第N个节点。因为要删除倒数第N个,所以要记录之前的节点pre,假设倒数第N个节点为cur,删除操作即为:因为要返回删除后的头结点,所以假设一个虚拟头结点P,P.next = head;初始时:pre = P,cur = pre.next;最后返回P.next;

2024-03-23 13:40:40 275

原创 手撕算法-无重复字符的最长子串

滑动窗口,记录窗口中的所有出现的字符,然后窗口左边界固定,右边界右滑,如果,窗口中不存在新的字符,则右滑成功,否则左边界右滑,直到窗口中不存在右边界的值。描述感觉不清晰,直接看代码吧!!

2024-03-23 13:39:21 248

原创 手撕算法-二叉搜索树的最近公共祖先

直接得到从根节点到两个目标节点的路径,这样我们利用路径比较就可以找到最近公共祖先。

2024-03-21 00:51:25 117

原创 手撕算法-判断是不是平衡二叉树

只需要看左右子树的深度差小于等于1,且左右子树都是平衡二叉树。

2024-03-21 00:31:32 181

原创 手撕算法-判断是不是二叉搜索树

二叉搜索树的特性就是中序遍历是递增序。既然是判断是否是二叉搜索树,那我们可以使用中序递归遍历。只要之前的节点是二叉树搜索树,那么如果当前的节点大于上一个节点值那么就可以向下判断。如果有出现当前的节点小于上一个节点值,就说明不是二叉搜索树,直接返回false;

2024-03-21 00:21:47 237

原创 手撕算法-合并二叉树

【代码】手撕算法-合并二叉树。

2024-03-20 23:17:40 114

原创 手撕算法-二叉搜索树与双向链表

同时不能新增节点,只能改变指针方向,left代表左,right代表右。二叉搜索树的中序遍历是递增序列。可以利用中序遍历完成。

2024-03-20 23:09:17 221

原创 手撕算法-二叉树的最大深度

root为根节点的树的最大深度 = max(左子树的最大深度, 右子树最大深度)+1。求以节点root为根节点的树的最大深度。截止条件是节点为空,深度为0;

2024-03-20 22:49:10 213

原创 手撕算法-判断是不是完全二叉树

采用层序遍历,找到一个为空的标记,如果后面还有值,就代表不是完全二叉树。

2024-03-20 00:21:13 176

原创 手撕算法-二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像。数据范围:二叉树的节点数 0≤_n_≤1000 , 二叉树每个节点的值 0≤_val_≤1000要求: 空间复杂度On本题也有原地操作,即空间复杂度O(1) 的解法,时间复杂度On比如:源二叉树镜像二叉树。

2024-03-17 21:47:33 460

原创 手撕算法-最长公共子序列(二)

典型的动态规划,直接看代码了。

2024-03-16 16:13:22 332

原创 Redisson 分布式锁原理分析

Redission 分布式锁源码分析。

2024-03-16 16:03:51 531

原创 手撕算法-队列实现栈And栈实现队列

转换数据方向,第一个栈写,第二个栈读。先进先出,变先进后出。

2024-03-16 11:19:14 367 1

原创 手撕算法-对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。自顶向下,判断每对子节点是不是对称的。

2024-03-16 10:57:44 398

原创 IDEA打开项目文件目录不见了

偶尔发生新拉下来的代码,或者旧代码修改了包名,项目名称等,idea左侧project一栏不显示代码的文件目录。图中标记2的位置选择主目录,3的位置选择 add content root ,在新的弹框中选择项目目录。选中后点击Apply,然后OK,此时项目目录已经出现。本人尝试能够解决,如果无法解决请搜索其他方法。

2024-03-10 16:24:10 1284

原创 ArrayList实现与扩容机制

ArrayList是线程不安全的列表集合。ArrayList可以保存 null 值。本篇分析了ArrayList的源码以及ArrayList的扩容机制。ArrayList线程不安全;ArrayList底层由数组保存数据;ArrayList每次扩容为之前的约1.5倍。并且初始容量是10;

2024-02-01 23:23:29 392

原创 类加载器与双亲委派模型

而JasperLoader的加载范围仅仅是这个JSP文件所编译出来的那一个.Class文件,它出现的目的就是为了被丢弃:当Web容器检测到JSP文件被修改时,会替换掉目前的JasperLoader的实例,并通过再建立一个新的Jsp类加载器来实现JSP文件的HotSwap功能。其他类型的加载器都由自己的父类加载器加载。类加载器作用在类加载阶段。类加载阶段中实现“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作的代码模块成为“类加载器”。作用:为了实现父类加载器使用子类加载器加载指定的类。

2024-02-01 23:22:46 902

原创 Java中的代理

本篇分析了静态代理与动态代理,其中动态代理分析了JDK动态代理与CGLIB动态代理。JDK动态代理要求被代理类必须实现接口,CGLIB以继承的方式实现代理。在众多框架中,广泛使用了动态代理,了解动态代理能更好的理解和学习各种框架的原理。

2024-02-01 23:20:57 877

原创 RocketMQ源码阅读-十-事务消息

本篇分析了RocketMQ关于事务消息的实现。Producer发送事务消息会先发送一个half消息,并注册一个事务消息回查监听器本地事务提交后,Producer会发送half消息提交消息本地事务回滚,Producer会发送half消息回滚消息若因网路等问题,迟迟没有收到提交或回滚消息,Broker会发起事务消息反查Producer收到事务消息反查请求,执行创建事务消息时注册的监听器,查询本地消息的状态,根据本地消息的状态决定是Commit还是Rollback事务消息。

2024-01-25 22:57:38 843

原创 RocketMQ源码阅读-九-自定义过滤规则Flitersrv

Filtersrv ,负责自定义规则过滤 Consumer 从 Broker 拉取的消息。减少了 Broker 的负担减少了 Consumer 接收无用的消息多了一层 Filtersrv 网络开销Flitersrv为了减少Broker的负担,且减少Consumer接收无用消息而生。Flitersrv作为中间层,Consumer订阅时传过滤类给Broker,Broker将过滤类传给Flitersrv,Flitersrv处理并实例化过滤类。

2024-01-25 22:56:44 847

STM32F103C8T6_AES-128-CTR_base64密文解密.rar

STM32F10x移植ST官方库进行AES-128-CTR加密解密,KEIL5工程文件,包含stm32-cryp-lib库 集成base64编码解码,可以对base64编码的字符串实现解密 详细介绍请看博客https://blog.csdn.net/weixin_43155866/article/details/102650979

2019-10-20

ST官方加密解密库.rar

ST官方加密库,可以实现DSA,AES,ARC4,ECC,HASH,RAND,TDES_DES加密解密,ST的亲儿子,转为STM32移植而生

2019-10-20

DS1302-STM32-测试可用.rar

此文件为DS1302时钟芯片驱动库,基于STM32F103,亲测可用。

2019-10-11

Java_API文档_中文详细版.rar

Java API文档中文版,下载即可使用,适合JAVA初学者进行学习。

2019-07-13

空空如也

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

TA关注的人

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