摘要:
一,背景 近期需要用到ActiveMQ接收Oozie执行作业之后的返回结果。Oozie作为消息的生产者,将消息发送给ActiveMQ,然后Client可以异步去ActiveMQ取消息。 ActiveMQ作为基于 JMS 开源的Apache Message Provider,故记录下JMS相关基础知识 阅读全文
摘要:
一,问题描述 实现二叉树的层序遍历--从根开始,依次向下,对于每一层从左向右遍历。 二,算法分析 层序遍历与先序、中序、后序遍历不同。层序遍历用到了队列,而先、中、后序需要用到栈。 因此,先、中、后序遍历 可以 采用递归方式来实现,而层序遍历则没有递归方式。 算法步骤: 初始时,根结点入队列 然后, 阅读全文
摘要:
一,问题描述 给定一颗二叉树,已知其根结点。 ①计算二叉树所有结点的个数 ②计算二叉树中叶子结点的个数 ③计算二叉树中满节点(度为2)的个数 二,算法分析 找出各个问题的基准条件,然后采用递归的方式实现。 ①计算二叉树所有结点的个数 1)当树为空时,结点个数为0,否则为根节点个数 加上 根的左子树中 阅读全文
摘要:
一,问题描述 需要生成一个[0,1]的随机数。即随机生成 0 或者 1。使用java.util.Random类的 nextInt(int)方法,当构造Random类的对象并提供随机数种子时,发现了一个奇怪的问题: 当使用 47 作为随机数种子构造 Random对象时: 使用该对象调用 nextInt 阅读全文
摘要:
一,问题描述 给定(可能有负数)整数a(1)、a(2)、……a(n),求 a(1)+a(2)+……+a(j)的最大值。为方便起见,若所有的整数为负数,则最大子序列和为0. 也就是:在一系列整数中,找出连续的若干个整数,这若干个整数之和 最大。 二,求解思路 下面介绍两种思路,一种的时间复杂度为O(N 阅读全文
摘要:
一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相加的最大值,其中被加数的下标大于加数的下标。由加法运算的可逆性,j >i 这个条件可以去掉。 即求出: maxValue = max{arr[j]+arr[i] and j > i} 在数组arr中没有重复的元素情况 阅读全文
摘要:
一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相减的最大值,其中被减数的下标不小于减数的下标。 即求出: maxValue = max{arr[j]-arr[i] and j >= i} 二,求解思路 下面采用两种不同的算法来求解,第一种算法的时间复杂度为O(N) 阅读全文
摘要:
一,介绍 本文主要二叉树的两种基本的典型应用: 1) 输出某个文件夹下所有文件名称(可以有子文件夹) 用先序遍历实现 2) 统计某个文件夹的大小(该文件夹下所有文件的大小--用后序遍历实现 二,实现分析 对于问题 1),输出文件名称的过程如下: 如果是文件夹,先输出文件夹名,然后再依次输出该文件夹下 阅读全文
摘要:
一,一些定义 树的深度定义:对于树中的节点n(i),n(i)的深度定义为,从根到n(i)的唯一路径的长度。 树的高度定义:对于树中的节点n(i),n(i)的高度定义为,从n(i)到树中叶子节点的最长路径的长度。因为树中可能有多个叶子结点,n(i)到每个叶子结点都会有路径,路径最长的即为n(i)的高度 阅读全文
摘要:
一,介绍 前面实现了字符串转换成整形数值。参考这里: 它不支持小数,不支持符号(正、负号) 现在实现一个更复杂一点字符串转换成数值的程序。 它支持“浮点字符串”转换成对应的浮点数值,如: "123.45" --> 123.45 支持字符串前面或者后面有空格的情况,如:" 123.45 " --> 1 阅读全文