摘要:题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快
阅读全文
摘要:题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 考察点: 1.复杂问题简单化,即由一个简单实例分析确定求解步骤 2.前序遍历的概念(根
阅读全文
摘要:字符串的全排列 此处采用的方式将字符串分为两部分 1. 固定一个字符,将之后的字符串全排列 2. 将固定字符与之后的字符依次交换 盗图如下,产生的字符串顺序为最后一行从左到右~ 代码中有两种包含重复字符的解决方案 1. 在将重排后的字符串输出时,判断是否重复过,若重复过,则不做处理 2. 将字符与之
阅读全文
摘要:今日学了思路,待补充 题目: 将长度为n的绳子剪成若干段,并求各段长度乘积的最大值。 思路: 1、动态规划 设f(n)代表长度为n的绳子剪成若干段的最大乘积,如果第一刀下去,第一段长度是i,那么剩下的就需要剪n-i,那么f(n)=max{f(i)f(n-i)}。而f(n)的最优解对应着f(i)和f(
阅读全文
摘要:题目1:给定两个数R和n,输出R的n次方,其中0.0<R<99.999, 0<n<=25 输入描述:多组测试用例,请参考例题的输入处理 输入每行一个浮点数 R 其中0.0 < R <99.999, 一个整数 n 其中0 < n <=25 输出描述:输出R的n次方 示例1 输入:95.123 12 0
阅读全文
摘要:题目:寻找丑数,把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 输入 6 输出 6思路:此题目中关键在于分析出新的丑数都是由现有的丑数乘以2,3,5得来的,如果现在的丑
阅读全文
摘要:题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出true,否则输出false。假设输入的数组的任意两个数字都不相同。 思路:首先二叉搜索树是指左子树全部小于根节点,右子树全部大于根节点的树。故: 对于一棵树:首先找到右子树的第一个节点,然后判断右子树中是否有小于根节
阅读全文
摘要:到了小Q丧心病狂的卫生间思考时间: 题目:小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,相差最小的有多少对呢?相差最大呢? 输入描述: 输入包含多组测试数据。 对于每组测试数据: N - 本组测试数据有n个数 a1,a2...an - 需要计算的数据 保证: 1<=N<=100000,
阅读全文
摘要:题目描述:从上到下打印二叉树的节点,同一层的从左到右打印 思路:采用队列来存储单层的节点,然后通过删除队列的头结点操作,依次遍历每一层。 代码为:
阅读全文
摘要:题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个栈是否为该栈的弹出顺序。假设压入栈的所有数字都不相等。例如序列1,2,3,4,5是某个栈的压入顺序,序列4,5,3,2,1是该栈序列的一个弹出序列,但是4,3,5,1,2就不是其弹出序列。(两序列长度相同) 思路:主要是栈的压入和弹出序
阅读全文
摘要:题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度为O(1)) 该题是自己第一次采用编程的方式来实现Java中栈的功能,故直接借鉴了大牛的代码 其中peek()函数是查看栈顶元素而不移除它。其实看完后仍旧有一点小迷茫。 如果想理解可以参看 https://w
阅读全文
摘要:题目:操作给定的二叉树,将其变换为源二叉树的镜像。 思路:前序(根左右的顺序)遍历一棵树,在存储的时候将其左右树进行交换,最后按照处理后的树还原,即得到其镜像。 该算法在Mirror函数中又调用了函数Mirror函数,此属于一种递归,为此查阅了递归和嵌套的相关定义: https://blog.csd
阅读全文
摘要:题目:输入一个矩阵,按照从外到里以顺时针的顺序依次打印出每一个数字,例如,若果输入如下的4*4矩阵:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10. 思路:该问题最直接的思路
阅读全文
摘要:题目描述:输入两棵二叉树A,B,判断B是不是A的子结构(约定空树不是任意一棵树的子结构) 思路: 1.首先设置标志位result=false,因为一旦匹配成功,则将标志位置为真,如果匹配不成功,则默认返回false 2.递归思想,若根节点相同,则递归调用DoseTree1hasTree2(),若根节
阅读全文
摘要:题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然,我们需要合成后的链表满足单调不减规则。 先公布结果: 此处,自己本来的编程思路是和上述程序类似的,即非递归操作,但是没有采用head链表,只是采用了cur链表,结果最终输出的时候总是只输出最后部分的节点。 查阅相关内容才没明白,此处涉
阅读全文
摘要:题目描述 输入一个链表,反转链表,输出新链表的表头 程序编写 将链表反转
阅读全文
摘要:题目描述 输入一个链表,输出该链表中倒数第k个结点。 编程过程 此处采用两个指针依次后移的方法来求解,首先,用一个指针移到第k个位置,之后将第二个指针放在第一位,与第二个指针一同移动,当第二个指针移动到最后的时候,第一个指针即处于倒数第k个结点。 考虑:链表为空、k为小于等于零的数,以及k的长度大于
阅读全文
摘要:题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 实现代码 此处采用类似于冒泡排序的方法进行程序编写 1 //采用类似冒泡排序的方法 2 public class Sol
阅读全文
摘要:题目:输入一个整数,输出该二进制表示中1的个数。其中负数用补码表示。 首先明确补码的定义: 将最高位作为符号位(0表示正,1表示负), 其它数字位表达数值本身的绝对值的数字表示方式 如果是正数,则表示方法和原码一样; 如果是负数,符号位不变,其余各位取反。 如果是正数,则表示方法和原码一样; 如果是
阅读全文
摘要:题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。 首先是概念理解,栈和对列存取的区别 栈(stack)是一种后进先出(last in first out, LIFO)的数据结构,而队列(queue)是一种先进先出(first in first out, FIF
阅读全文