笔试编程
峰回路转心不死
梦的边陲风吹不灭,平地一声雷
展开
-
java最大公约数,最小公倍数
一 .最大公约数: 如果有两个数A、B ,求最大公约数? step1: 判断A,B 是否想等,如果想等,最大公约数就是A或 B; step2: 用A,B中较大的数除以较小的数,如果余数为0 ,那么最大公约数就是较小的那个数。如果余数不为0,到第三步。 step3: 用A,B 中较小的那个数除以第二步所得的余数,如果为0,那么第二部所得的余数就是最大公约数,如不是到第四步。 step4:经过step...原创 2019-06-21 21:06:15 · 237 阅读 · 0 评论 -
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
本题玩儿的就是递归思想,本人太菜忽略了 B 数根节点的值可能会重复出现在A数中,以下代码摘自牛客上的一位大神。 public static boolean HasSubtree(TreeNode root1, TreeNode root2) { boolean result = false; //当Tree1和Tree2都不为零的时候,才进行比较。否则直接返回f...转载 2019-06-26 00:20:31 · 297 阅读 · 0 评论 -
经典的青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果): 分析: 当 n = 1 时,有 1 种跳法。 当 n = 2 时,有 2 种跳法。 当n = 3 时,有3种跳法 [1,2] 、[2,1] 、[1,1,1] 当n = 4 时 ,有5种跳法 [1,1,1,1] [2,2] [1,2,1] [2,1,1] [1,1,2] 当n ...原创 2019-06-23 20:20:52 · 202 阅读 · 0 评论 -
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
解决思路:定义两个栈,一个为正常的存储数据,另一个为最小值栈。 代码思路: a. 如果最小值栈内为空,则正常push b.如果最小值栈不为空,则比较将要push的值 与 最小值栈中栈顶元素,如果 将要入栈的值小于或者等于最小值栈 中的栈顶元 素,则将该元素压入正常的栈 并且 将该元素雅茹最小值栈中。 c. pop 出栈时,将出栈元素与 最小值栈顶元素进行比较,如果相等,则最小值栈也进行出栈...原创 2019-06-27 00:13:03 · 790 阅读 · 2 评论 -
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应
【思路】借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈,直到相等以后开始出栈,出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空,说明弹出序列不是该栈的弹出顺序。 举例: 入栈1,2,3,4,5 出栈4,5,3,2,1 首先1入辅助栈,此时栈顶1≠4,...原创 2019-06-27 00:38:30 · 266 阅读 · 0 评论 -
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路: 1. 后序遍历则数组最后一个元素就是根节点。 2. 从左向右遍历,查找第一个大于根节点的元素,这个元素为根节点下的第一个右子数。找到根节点的右子数后,该元素的左边第一个元素为根节点的左子树。 3. 遍历左子树是否有大于根节点的元素,如果有则是...原创 2019-06-28 00:37:28 · 359 阅读 · 0 评论