
Online Judge
文章平均质量分 51
fengsser
这个作者很懒,什么都没留下…
展开
-
hiho 1000 : A + B (数学)
时间限制:1000ms单点时限:1000ms内存限制:256MB描述求两个整数A+B的和输入输入包含多组数据。每组数据包含两个整数A(1 ≤ A ≤ 100)和B(1 ≤ A ≤ 100)。输出对于每组数据输出A+B的和。样例输入1 23 4样例输出37#includeint main(void){原创 2015-04-22 22:52:22 · 2091 阅读 · 0 评论 -
剑指offer:链表中倒数第k个结点(链表)
题目描述输入一个链表,输出该链表中倒数第k个结点。分析:两个指针pointResult和pointEnd一起指向头结点,然后根据k,移动pointEnd,使pointResult和pointEnd的距离为k-1。然后同时移动pointResult和pointEnd,当pointEnd指向最后一个结点时,pointResult指向倒数第k个结点。这种方法只用遍历一原创 2015-07-06 10:24:27 · 473 阅读 · 0 评论 -
剑指offer: 从上往下打印二叉树(树)
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。分析:层次遍历二叉树,可以用队列辅助。代码:vector PrintFromTopToBottom(TreeNode *root) { vector result; if(!root) return result; vector queue; queu原创 2015-07-04 09:58:24 · 765 阅读 · 0 评论 -
剑指offer:用两个栈实现队列(栈和队列)
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析:输入1,2,3入队,则输出也为1,2,3。由于我们只有栈,考虑全部压入第一个栈,则有stack 1 3 2 1这时POP应该先输出1,考虑到用第二个栈储存第一个栈POP出来的元素,恰好是队列的输出顺序stack1原创 2015-07-04 10:12:16 · 466 阅读 · 0 评论 -
剑指offer: 从尾到头打印链表(链表)
题目:题目描述输入一个链表,从尾到头打印链表每个节点的值。返回新链表。分析:逆转链表,与栈顺序一致,可以用辅助栈解决这个问题。代码:vector printListFromTailToHead(struct ListNode* head) { vector stack; vector result; wh原创 2015-07-10 09:56:52 · 1529 阅读 · 0 评论 -
剑指offer:反转链表(链表)
题目描述输入一个链表,反转链表后,输出反转链表后头节点分析:建立三个指针,previousNode,currentNode,nextNode,每次把currentNode->指向previousNode,然后三个指针一起往后移动,循环操作。代码:ListNode* ReverseList(ListNode* pHead) { if(pHead == nul原创 2015-07-03 10:01:42 · 1312 阅读 · 0 评论 -
剑指offer: 二叉树的深度(树)
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。代码:int TreeDepth(TreeNode* pRoot){ if(pRoot == nullptr) return 0; int left = TreeDepth(pRoot->left);原创 2015-06-30 20:20:15 · 471 阅读 · 0 评论 -
剑指offer: 不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。分析:不用四则运算符号,考虑二进制位运算。考虑做加法的时候,二进制1与1变0,0与1变1,0与0变0,与^运算一致。然而还有进位问题,考虑到进位出现的情况为1与1,因此若两个数相与若为不为0,则需要进位,把这个结果左移1位,与上面^运算的结果相加则可。而这个相加和上述描述一致,原创 2015-06-30 16:13:42 · 616 阅读 · 0 评论 -
剑指offer: 二叉树的镜像(树)
题目描述输入一个二叉树,使其变成镜像树。分析:前段时间Max Howell面试google闹得风风火火的遗一题,没什么好说的,就是交换左右子树,递归解决。代码:void Mirror(TreeNode *pRoot) { if(pRoot == nullptr) return; TreeNode *temp = p原创 2015-07-01 14:44:44 · 383 阅读 · 0 评论 -
剑指offer: 矩形覆盖(循环与递归)
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析:如图,设n=3,设我们从最左边开始覆盖,一开始,我们有两种选择,竖着放或者横着放,若横着放第一块后,下一块必然要把4个格子填满。然后图像就分为已经填好的,和还没填好的。可以看到剩下还没填好的,其实是初始问题n的一个原创 2015-06-30 10:05:11 · 3359 阅读 · 1 评论 -
剑指offer: 变态跳台阶(循环与递归)
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析:这题是跳台阶的变种,易知f(n) = 1 + f(n-1) + f(n-2) + ...... + f(1)。这种用递归肯定是有很多重复计算的,所以可以使用循环,从f(1)开始往上加。分析有f(1) f(2)原创 2015-06-29 20:42:12 · 760 阅读 · 0 评论 -
剑指offer:跳台阶(循环和递归)
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析:考虑1个台阶,只有1跳法,则 f(1) = 1考虑2个台阶,可以1级级条,可以一次跳2级,有两种跳法,则f(2) = 2考虑3个台阶,它可以由1级跳来得到,也可以由2级跳来得到,所以它的跳法为 f(3-1) + f(3-2) = f(1) + f(2)原创 2015-06-29 10:05:16 · 1621 阅读 · 0 评论 -
剑指offer:二维数组中的查找(数组)
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析:1 2 34 5 67 8 9从二维数组最右上角的数值(3)开始比较,若目标比该数大,则目标肯定在该数的下方,反之,在该数的左方。根据此规则,寻找下一个比较的数值,重复以上原创 2015-06-29 10:12:17 · 2216 阅读 · 0 评论 -
hiho 1082 : 然而沼跃鱼早就看穿了一切
描述fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼(“marshtomp”,不区分大小写)。为了使句子不缺少成分,统一换成 “fjxmlhx” 。输入输入包括多行。每行是一个字符串,长度不超过200。一行的末尾与下一行的开头没有关系。输出输出包含多行,为输入按照描述中变换的结果。样例输入The Mars原创 2015-04-24 15:52:00 · 3783 阅读 · 0 评论 -
hiho 1015 : 提交补卡
描述小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序。100天过去了,小Ho查看自己的提交记录发现有N天因为贪玩忘记提交了。于是小Ho软磨硬泡、强忍着小Hi鄙视的眼神从小Hi那里要来M张"补提交卡"。每张"补提交卡"都可以补回一天的提交,将原本没有提交程序的一天变成有提交程序的一天。小Ho想知道通过利用这M张补提交卡,可以使自己的"最长连续提交天数"最多变原创 2015-04-24 11:48:34 · 1500 阅读 · 0 评论 -
hiho 1039 : 字符消除
描述小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的:1)如果s包含长度超过1的由相同字母组成的子串,那么这些子串会被同时消除,余下的子串拼成新的字符串。例如"ABCCBCCCAA"中"CC","CCC"和"AA"会被同时消除,余下"AB"和"B"拼成新的字符串"ABB"。2)上述消除会反复一轮一轮进行,直到新的字符串不包含相邻的原创 2015-04-23 17:11:37 · 1939 阅读 · 0 评论 -
hiho 1014 : Trie树
1111描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在这个词典里面找到以这个字符串开头的所有单词呢?”身经百战的小Ho答道:“怎么会不能呢!你每给我一个字符串,我就依次遍历词典里原创 2015-04-23 13:09:23 · 1223 阅读 · 0 评论 -
剑指offer: 二进制中1的个数(位运算)
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。分析:可以通过每次与1,判断最后一位是否为1,然后右移。移动的次数为位数,与机器字长有关,可以通过sizeof得出字结束,然后乘以8.代码:int NumberOf1(int n) { if(n==0) return 0; int bitLen = sizeof(n)*原创 2015-06-29 18:06:20 · 609 阅读 · 0 评论