- 博客(100)
- 收藏
- 关注
原创 RabbitMQ集群部署
一般来说,RabbitMQ部署分布式集群架构有如下三种:1.Cluster2.Federation3.Shovel其中最常用的就是cluster模式(集群),它可以动态增加节点或减少,但只支持同一网段的局域网内的节点。而federation允许单台服务器上或多台服务器组成的集群之间进行消息转发和路由。federation队列类似于单向点对点连接,消息会在整个联合队列之间转发任意次,直到被消费者接收。但是此方式也有弊端,就是无法实现高可用,当其中的某一个节点宕机时就导致服务不可用,这时候就需要引入中间
2021-12-28 10:34:57 12158
原创 RabbitMQ单机部署
上一篇文章我们聊到了rabbitmq的实现原理:RabbitMQ实现原理这篇文章将会介绍在Redhat7.x或centos下如何部署rabbitmq,话不多说,我们开始。1、下载安装包部署前需要准备好Erlang和RabbitMQ两种安装包(注:两者有版本依赖关系),官网下载地址如下:erlang:https://www.erlang-solutions.com/resources/download.htmlrabbitmq:https://github.com/rabbitmq/rabbitmq
2021-08-13 17:41:16 666
原创 RabbitMQ原理详解
RabbitMQ:我们通常谈到消息队列,就会联想到这其中的三者:生产者、消费者和消息队列,生产者将消息发送到消息队列,消费者从消息队列中获取消息进行处理。对于RabbitMQ,它在此基础上做了一层抽象,引入了交换器exchange的概念,交换器是作用于生产者和消息队列之间的中间桥梁,它起了一种消息路由的作用,也就是说生产者并不和消息队列直接关联,而是先发送给交换器,再由交换器路由到对应的队列,至于它是根据何种规则路由到消息队列的,就是我们下面需要介绍的内容了。这里的生产者并没有直接将消息发送给消息队列,而是
2021-07-23 11:47:44 62259 12
原创 leetcode450. 删除二叉搜索树中的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = 3 5 / \ 3 6 / \ \2 4 7给定需要删除的节点值是 3,所以我们首
2020-09-17 10:41:48 210
原创 leetcode429. N叉树的层序遍历
给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个 3叉树 :返回其层序遍历:[[1],[3,2,4],[5,6]]说明:涉及到层次遍历可以用queue(利用队列的先进先出原则)来处理,每处理一层就记录下一层的节点,并删掉当前这层的节点,这样可以保证所有节点都是层次遍历的结果。/*// Definition for a Node.class Node {public: int val; vector<Node*> ch
2020-09-15 17:15:15 192
原创 leetcode404. 左叶子之和
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24说明:如果一个节点的左子节点不为空,且左子节点没有子节点,则此左子节点一定是左叶子节点。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNo
2020-09-15 17:09:06 282
原创 leetcode257. 二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。说明:递归遍历二叉树所有的节点,并在遍历的过程中记录当前的节点值,如果到达叶子节点了说明这条路径结束了,插入vector,这样就能得到二叉树的所有路径。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *
2020-09-15 17:03:37 158
原创 leetcode236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]说明:这里要关注一点就是如果p和q本身具有父子或者祖孙关系的,则直接返回其中的那个父节点或祖先节点,因此要先判断p和q的节点值是不是根节点值,是就直接返回根节点
2020-09-15 16:58:18 338
原创 leetcode235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节点 2 和
2020-09-10 17:44:46 191
原创 leetcode230. 二叉搜索树中第K小的元素
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出:1示例 2:输入: root = [3,1,4,null,2], k = 1 5 / \ 3 6 / \ 2 4 / 1输出:3备注
2020-09-10 12:59:32 242
原创 leetcode226. 翻转二叉树
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * Tr
2020-09-10 12:50:22 101
原创 leetcode222. 完全二叉树的节点个数
给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输出: 6备注:利用完全二叉树的性质来求解,当左子树的高度大于右子树的高度时,则右子树是满二叉树,即可计算出此时右子树的节点总数,然后再递归求出左子树的节点数,反之如果左
2020-09-10 12:48:19 207
原创 leetcode199. 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Sol
2020-09-02 19:48:16 125
原创 leetcode173. 二叉搜索树迭代器
实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。BSTIterator iterator = new BSTIterator(root);iterator.next(); // 返回 3iterator.next(); // 返回 7iterator.hasNext(); // 返回 trueiterator.next(); // 返回 9iterator.hasNext(); // 返回 true
2020-09-02 19:46:12 210
原创 leetcode145. 二叉树的后序遍历(超级通俗易懂的迭代法)
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]输出: [3,2,1]/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(
2020-09-02 19:43:11 153
原创 leetcode144. 二叉树的前序遍历(迭代法)
给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]输出: [1,2,3]/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class S
2020-09-02 17:03:11 255
原创 leetcode129. 求根到叶子节点数字之和
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3]1/ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13.示例 2:输入: [4,9,0,5,1]4/ 9 0/
2020-09-02 16:56:38 136
原创 leetcode116. 填充每个节点的下一个右侧节点指针
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。输入:{“KaTeX parse error: Expected '}', got 'EOF' at end o
2020-09-02 16:46:17 115
原创 leetcode114. 二叉树展开为链表
给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6思路:可以用一个stack存储右节点,如果左节点存在,将右节点设置为左节点,左节点置位null,然后用递归处理当前的右节点;如果左节点不存在,则取出stack中的栈顶元素设置为右节点,同样地递归处理当前的右节点
2020-09-02 16:39:32 93
原创 leetcode113. 路径总和 II
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1/** * Definition for a binary tree node. * struct TreeNod
2020-09-02 15:26:00 86
原创 leetcode112. 路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1/** * Definition for a binary tree node. * str
2020-09-02 15:15:21 105
原创 leetcode111. 二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7递归法求解:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;
2020-09-02 15:03:08 83
原创 leetcode110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,
2020-08-20 11:31:34 108
原创 leetcode108. 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5/** * Definition for a binary tree node.
2020-08-20 11:26:31 102
原创 leetcode107. 二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]/** * Definition for a bi
2020-08-20 11:22:29 93
原创 leetcode104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。/** * Definition for a binary tree node. * struct TreeNode { * int val; *
2020-08-20 11:19:51 95
原创 leetcode103. 二叉树的锯齿形层次遍历
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[[3],[20,9],[15,7]]/** * Definition for a binary tree node. * struct TreeNode { * int val
2020-08-20 11:17:50 99
原创 leetcode101. 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3/** * Definition for a binary tree node. * struct Tre
2020-08-20 11:14:53 138
原创 leetcode100. 相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ 2 2 [1,2], [1,null,2]输出: false/** * De
2020-08-20 11:10:41 87
原创 leetcode98. 验证二叉搜索树
难度中等729给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。/** * Definition f
2020-08-20 11:06:56 180
原创 leetcode94.二叉树的中序遍历(迭代法)
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class So
2020-08-20 10:49:18 106
原创 leetcode102. 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7其层次遍历结果:[[3],[9,20],[15,7]]思路:可用队列实现这个问题,每一层的节点存储在队列中,然后获取节点值之后判断该节点是否有左右子节点,有就保存,保存完之后需要删除该节点,需要用一个循环来控制该层节点是
2020-06-10 19:17:11 294
原创 leetcode120.三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/triangle著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2020-03-30 15:55:47 190
原创 leetcode106. 从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:class Solution {public: TreeNode* buildTree(vector<int>& inorder,...
2020-01-13 20:04:19 112
原创 leetcode105. 从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:/** * Definition for a binary tree node. * struct TreeNode { * int val; * ...
2020-01-13 19:21:34 262
原创 leetcode91.子集Ⅱ
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]class Solution {public: vector<vector<int>> subsets...
2019-10-28 22:06:01 207
原创 leetcode81. 搜索旋转排序数组 II
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 2:输入: nums = [2,5,6...
2019-05-14 21:07:37 290
原创 leetcode80. 删除排序数组中的重复项 II
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面的元素...
2019-05-14 20:08:18 111
原创 leetcode79. 单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true...
2019-05-12 21:49:05 148
原创 leetcode78. 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]思路:这题需要用到回溯思想,用一个临时的数组temp来存储这些子集,只要递归进入循环就要将这个子集压入目标二维数组中,至于这个tem...
2019-05-12 19:34:22 147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人