- 博客(179)
- 资源 (8)
- 收藏
- 关注
原创 mkdir命令-创建目录的小技巧
mkdir命令是"make directories"单词缩写,其功能是创建目录,黑夜情况下,如果要创建的目录已存在,则会提示此文件已存在而不会继续创建目录。
2022-11-28 23:56:57
4644
原创 ls命令-使用频率最高的命令
ls命令是英文单词list的缩写,其功能是列出目录的内容及其内容属性信息(list directory contents)。该命令有点类似于DOS系统下的dir命令。
2022-11-26 10:49:48
1053
原创 SpringBoot之用拦截器避免重复请求
开发中可能会经常遇到短时间内由于用户的重复点击导致几秒之内重复的请求,可能就是在这几秒之内由于各种问题,比如网络,事务的隔离性等等问题导致了数据的重复等问题,因此在日常开发中必须规避这类的重复请求操作,今天就用拦截器简单的处理一下这个问题。
2022-11-21 22:42:02
866
原创 设计模式之禅01单一职责原则
单一职责原则,英文名称是Single Responsibility Principle,简称是SRP,定义是应该有且仅有一个原因引起类的变更。
2022-10-29 23:47:39
308
原创 leetcode 287. Find the Duplicate Number 寻找重复数 (中等)
这道题给我们n+1个数,所有的数都在[1, n]区域内,首先让证明必定会有一个重复数,题目要求不能改变原数组,即不能给原数组排序,又不能用多余空间,那么hash的就不用考虑了,又要求时间小于O(n^2),只能考虑用二分搜索法了,在区间[1, n]中搜索,首先求出中点mid,然后遍历整个数组,统计所有小于等于mid的数的个数,如果个数小于等于mid,则说明重复值在[mid+1, n]之间,反之,重复值在[1, mid-1]之间,然后依次类推,直到搜索完成,此时的low就是我们要求的重复值。
2022-10-25 23:42:11
895
原创 leetcode 191. Number of 1 Bits 位1的个数(简单)
思路1:n & 1如果为1,ans=ans+1,然后再n向右移一位,直到n=0,返回ans。注意:因为是Java实现所以要用for思路2:先判断如果n!=0,ans++,令n = n&(n-1),循环直到n=0,返回ans
2022-10-24 23:18:20
106
原创 leetcode 15. 3Sum 三数之和(中等)
sortfind,整个数组排序O(NlogN),以示例1为例,先排序为[-4, -1, -1, 0, 1, 2],定义一个a遍历,再遍历求b,c,此时令b等于a接下来的第一个元素,c为最后一个元素,判断a+b+c0时令c-1.
2022-10-23 13:27:14
109
原创 leetcode 450. Delete Node in a BST 删除二叉搜索树中的节点 (中等)
这道题让我们删除二叉搜索树中的一个节点,难点在于删除完节点并补上那个节点的位置后还应该是一棵二叉搜索树。被删除掉的节点位置,不一定是由其左右节点补上,
2022-10-21 19:16:41
177
原创 创建容器镜像:如何编写正确、高效的Dockerfile
镜像是一个打包文件,里面包含了应用程序和依赖的环境,例如:文件系统、环境变量和配置参数等。
2022-10-20 00:53:38
555
原创 leetcode 380. Insert Delete GetRandom O(1) O(1) 时间插入、删除和获取随机元素 (中等)
这道题有个限制在常数时间范围内实现插入删除和获得随机数操作,没有该限制的话直接用一个HashSet就可以搞定。我们利用一个可变list和一个HashMap,其中list用来保存数字,HashMap用来建立每个数字和其在list中的位置之间的映射。重点在于删除元素的逻辑,如果要删除的元素不存在返回false,如果存在,先求出该元素在list中的索引,将list中最后一个元素更新到此位置,同时更新该元素中在hashmap的索引,然后list中删除最后一个元素,hashmap也删除要删除的元素 。
2022-10-18 23:07:46
181
原创 Docker搭建私有镜像仓库与WordPress
最近在看CI/CD与k8s,作为前期准备,先熟悉一下Docker的基本操作,这里我们先用Docker部署几个服务
2022-10-15 23:18:43
993
原创 leetcode 146. LRU Cache LRU 缓存 (简单)
LRU是Least Recently Used的简写,是最近最少使用的意思。这个缓存器主要实现两个方法,get和put。我们用List来存储缓存数据,用map来存储key与value的映射,实现get时,通过map取出当前值,并在list中将该值置为第1个实现put时,分2种情况,第1种缓存
2022-10-14 20:49:35
665
原创 leetcode 220. Contains Duplicate III 存在重复元素 III(困难)
这道题关注与不同值之间的关系,有两个限制条件,两个数字的坐标差不能大于k,值差不能大于t。还是用map结构来记录值和下标的映射。这里定义两上变量i和j,开始都指向0,然后i开始向右遍历数组,如果i和j之差大于k,且map中有nums[j],则删除并j+1,这样保证了map中所有的数的下标之差都不大于k,然后我们检查如果有值差小于等于则返回true。遍历最后返回false。
2022-10-13 13:14:59
352
原创 leetcode 219. Contains Duplicate II 存在重复元素 II(简单)
本来要刷210.存在重复元素III的,发现上一题就是II,于是就先刷这题了。这道题限制了数组中只许有一组重复的数字,而且其坐标差不能超过k。用map来解决,定义一个map,来记录每个数字和其坐标的映射,然后遍历这个数组,判断map中是否存在当前数的坐标,如果存在判断已存在的坐标对应的数与当前数的差是否超过k。
2022-10-12 13:38:58
274
原创 leetcode 785. Is Graph Bipartite判断二分图 (中等)
利用队列和广度优先搜索,我们可以对未染色的节点进行染色,并且检查是否有颜色相同的相邻节点存在,在代码中我们用0表示未检查的节点,用1和2表示两种不同的颜色
2022-10-11 13:15:22
119
原创 leetcode 236. Lowest Common Ancestor of a Binary Tree 二叉树的最近公共祖先(中等)
这是 二叉搜索树的最近公共祖先 这题的衍生题,这道题是普通的二叉树,不是二叉搜索树,所以就不能利其特有的性质,只能在二叉树中来搜索p和q,然后从路径中找到最后一个相同的节点即为父节点,可以用递归来实现,在递归函数中,首先看当前节点是否为空,若为空则直接返回空;若为p或q中的任一个,也直接返回当着节点;否则的话就对其左右子节点分别调用递归函数。
2022-10-10 12:58:14
659
原创 leetcode 145. Binary Tree Postorder Traversal 二叉树的后序遍历 (中等)
分析一下用非递归方法的思路:跟前序、中序、层序一样都要用到栈,后序的顺序是左 右 根,所以当一个节点值被取出来时,它的左右子节点要么不存在,要么已经被访问过了。先将根结点压入栈,然后定义一个辅助结点 head,while 循环的条件是栈不为空,在循环中,首先将栈顶结点t取出来,如果栈顶结点没有左右子结点,或者其左子结点是 head,或者其右子结点是 head 的情况下。
2022-10-09 18:06:27
326
原创 leetcode 94. Binary Tree Inorder Traversal 二叉树的中序遍历(中等)
二叉树的中序遍历顺序为左 根 右,可以用递归和非递归来解。递归解法十分直接,对左了节点调用递归函数,根节点访问值,右子节点再调用递归函数。非递归有两种方法,一种使用栈:从根节点开始,先将根节点压入栈,然后再将其所有左节点压入栈,然后取出栈顶节点,保存节点值,再将当前指针移到其右子节点上,若存在右子节点,则在下次循环时又可将其所有左子节点压入栈中,这样就保证了访问顺序为左 根 右。
2022-10-08 19:23:43
676
原创 leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树(中等)
要求从中序和后序遍历的结果来重新建原二叉树,中序遍历顺序是左 根 右,后序遍历顺序是左 右 根,对于这种树的重建一般采用递归来做,由于后序的顺序的最后一个肯定是根,所以原二叉树的根节点可以知道
2022-10-07 23:56:55
107
原创 leetcode 889. Construct Binary Tree from Preorder and Postorder Traversal 根据前序和后
先序遍历顺序是根左右,后序遍历顺序是 左右根,要建立树,肯定要从根节点开始创建,然后再创建左右子节点,根据先序和后序的特点,根节点的位置是固定的,即是先序遍历的第一个,又是后序遍历的最后一个,知道了根节点位置,我们需要分隔左右子树的区间。
2022-10-06 16:46:19
342
原创 leetcode 530. Minimum Absolute Difference in BST二叉搜索树的最小绝对差 (简单)
这道题给我们一棵二叉搜索树,让我们求任意个节点值之间的最小绝对差。由于BST的左
2022-10-05 13:24:08
87
原创 leetcode 235. Lowest Common Ancestor of a Binary Search Tree 二叉搜索树的最近公共祖先(简单)
求二叉树的最小共同父节点,可以用递归来求解,同志二叉搜索树的特点是左 < 根 < 右,所以根节点的值一直都是中间值,大于左子树的所有节点值,小于右子树的所有节点值,我们可以做如下判断,如果根节点的值大于 p 和 q 之间的较大值,说明 q 和 q 都在左子树中,那么此时我们就进入根节点的左子节点继续 uxjv,如果根节点小于 p 和 q 之间的较小值,说明 p 和 q 都在右子树中
2022-10-04 11:47:29
193
原创 leetcode 538. Convert BST to Greater Tree 把二叉搜索树转换为累加树(简单)
可以将中序遍历左根右的顺序逆过来,变成右根左的顺序,这样可以反向计算累加和sum,同时更新节点值。
2022-10-01 23:58:11
129
原创 leetcode 513. Find Bottom Left Tree Value 找树左下角的值 (简单)
求二叉树的最左下树节点的值,也就是最后一行左数第一个值,可以用先序遍历来做,维护一个最大尝试和该尝试的节点值,由于先序遍历遍历的顺序是根左右,所以每一行最左边的节点肯定最先先遍历到,由于是新一行,那么当前尝试肯定比之前的最大深度大,所以可以更新最大深度为当前深度,节点值res为当前节点值,这样在遍历到该行其他节点时就不会更新res了
2022-09-30 18:56:58
922
原创 leetcode 226. Invert Binary Tree 翻转二叉树(简单)
翻转二叉树是树的基本操作之一,可以使用递归和非递归两种方法。递归方法:交换当前左右节点,并直接调用递归即可。
2022-09-29 22:21:22
558
原创 leetcode 572. Subtree of Another Tree 另一棵树的子树 (简单)
思路1:子树必须是从叶节点开始的,中间部分的不能算是子树,转换一下思路,从root的某个节点开始,就跟subRoot的所有结构都一样,那么问题就转换成了判断两棵树是否相同
2022-09-28 13:12:56
95
原创 leetcode 617. Merge Two Binary Trees 合并二叉树(简单)
直接用递归调用给定函数,先判断如果root1为空返回root2,如果root2为空返回root1,都存在的情况下建立新节点node,然后对root1和root2的左子节点调用递归并赋给node的左子节点,再对root1和root2的右子节点调用递归并赋给node的右子节点,返回node即可。
2022-09-27 13:00:20
144
原创 leetcode 208. Implement Trie (Prefix Tree) 实现 Trie (前缀树) (中等)
字典树的插入、删除和查找都不难,用一个一重循环即可,即第i次循环找到前i个字母所对应的子树,然后进行相应的操作。实现这棵字母 树,可以用最常见的数组保存即可(静态开辟内存)。至于节点对儿子的指向,一般有三种方法:
2022-09-26 13:07:26
137
原创 leetcode 669. Trim a Binary Search Tree 修剪二叉搜索树 (简单)
什么是二叉查找树?二叉查找树(Binary Search Tree,BST)是一种特殊的二叉树:对于每个父节点,其左子树中所有节点的值小于等于父节点的值,其右子树中所有节点的值大于等于父节点的值。利用二叉查找树的大小关系,我们可以很容易地利用递归进行树的处理。
2022-09-24 19:53:16
127
原创 leetcode 144. Binary Tree Preorder Traversal 二叉树展开为链表(中等)
二叉树的遍历,常见的有先序遍历、中序遍历、后序遍历和层序遍历,它们用uxjv实现起来都非常简单;考虑使用非递归来实现,用到时stack来辅助转自,由于先序遍历的顺序为 根左右
2022-09-23 13:12:39
547
原创 leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树(中等)
本题要求用先序和中序遍历来建立二叉树,由于先序的顺序的第一个肯定是根,所以原二叉树的根节点可以知道,题目中给了一个很关键的条件就是树中没有相同元素,有了这个条件就可以在中序遍历中也定位出根邛的位置,并以根节点的位置将中序遍历拆分为左右两个部分,分别对其递归调用原函数。
2022-09-22 13:30:24
137
原创 leetcode 637. Average of Levels in Binary Tree 二叉树的层平均值(简单)
求一个二叉树每层的平均值,利用广度优先搜索,我们可以很方便地求取每层的平均值。直接使用queue,直接将每层的值累计加起来除以该层的节点个数,存入结果ans中即可。
2022-09-15 21:16:55
503
原创 leetcode 1110. Delete Nodes And Return Forest 删点成林(中等)
二叉树的题首先想到用递归,递归方法传递4个参数,当前节点;是否是根节点(如果是根节点、且存在左右子树才会形成新树);再传递一个hashset用来存储要删除的节点,达到常数据级搜索;还有一个保存结果的list。
2022-09-14 14:11:39
316
原创 leetcode 110. Balanced Binary Tree 平衡二叉树(简单)
思路:定义一个求各个节点深度的函数,然后中每个节点的两个子树来比较深度差,针对每个点都会被计算深度时访问一次进行优化,如果发现子树不平衡,则不计算具体的深度,而是直接返回-1,优化后的谅赤:对于每一个节点,通过checkDepth方法递归获得左右子树的深度,如果子树是平衡的,则返回真实的深度,若不平衡,直接返回-1。
2022-09-13 12:53:20
142
原创 leetcode 543. Diameter of Binary Tree 二叉树的直径(简单)
求二叉树的直径,其实就是求根节点左右两个子树的深度之和。我们只要对每个节点求出其左右子树深度之和,这个值作为一个候选值。
2022-09-09 13:01:26
94
Orange's一个操作系统的实现(随书光盘)
2018-05-28
ORANGE’S:一个操作系统的实现
2018-05-28
Kafka权威指南(2018中文版)
2018-05-28
MySQL技术内幕
2018-03-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人