剑指offer
hackcoder
记录技术点滴
展开
-
剑指offer系列源码-数字在排序数组中出现的次数
题目1349:数字在排序数组中出现的次数 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2039解决:608 题目描述: 统计一个数字在排序数组中出现的次数。 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小。1<=n <= 10^6。 第二行有n个整数,表示数组元素,每个元素均为int。 第三行有1个整数m,表示接下来有m次查询。1<=m<=10^3。 下面有m行,每行有原创 2014-12-10 22:17:32 · 487 阅读 · 0 评论 -
剑指offer系列源码-和为S的连续正数序列
题目1354:和为S的连续正数序列 时间限制:2 秒内存限制:32 兆特殊判题:否提交:1685解决:511 题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你原创 2014-12-11 18:06:39 · 709 阅读 · 0 评论 -
剑指offer系列源码-数组中只出现一次的数字
题目1351:数组中只出现一次的数字 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2582解决:758 题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组大小。2<=n <= 10^6。 第二行包含n个整数,表示数组元素,元素均为int。 输出: 对应每个测试案例,输出数组原创 2014-12-11 00:03:19 · 929 阅读 · 0 评论 -
剑指offer系列源码-丑数
题目1214:丑数 时间限制:1 秒内存限制:32 兆特殊判题:否提交:1700解决:756 题目描述: 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 输入: 输入包括一个整数N(1<=N<=1500)。 输出: 可能有多组测试数据,对于每组数据, 输出第N个丑数。原创 2014-12-10 13:54:31 · 720 阅读 · 0 评论 -
剑指offer系列源码-和为S的两个数字
题目1352:和为S的两个数字 时间限制:2 秒内存限制:32 兆特殊判题:否提交:2651解决:668 题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输入: 每个测试案例包括两行: 第一行包含一个整数n和k,n表示数组中的元素个数,k表示两数之和。其中1 <= n <= 10^6,k为int 第二行包原创 2014-12-11 10:04:01 · 800 阅读 · 0 评论 -
剑指offer系列源码-两个链表的第一个公共结点
两个链表的第一个公共结点 两个链表相交成Y型。 #include #include using namespace std; struct ListNode{ int value; ListNode* next; }; unsigned int getListLength(ListNode* pHead){ unsigned int length = 0;原创 2014-12-10 17:32:18 · 814 阅读 · 0 评论 -
剑指offer系列源码-第一个只出现一次的字符
题目1283:第一个只出现一次的字符 时间限制:1 秒内存限制:32 兆特殊判题:否提交:1408解决:793 题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。 输入: 输入有多组数据 每一组输入一个字符串。 输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。 样例输入: ABACCDEFF AA 样例输出: 1 -原创 2014-12-10 14:24:11 · 562 阅读 · 0 评论 -
剑指offer系列源码-把数组排成最小的数
题目1504:把数组排成最小的数 时间限制:1 秒内存限制:128 兆特殊判题:否提交:1463解决:448 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 输入: 输入可能包含多个测试样例。 对于每个测试案例,输入的第一行为一个整数m (1<=m <=10原创 2014-12-10 12:39:55 · 601 阅读 · 0 评论 -
剑指offer系列源码-数组中的逆序对
题目1348:数组中的逆序对 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2133解决:500 题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组中的元素个数。其中1 <= n <= 10^5。 第二行包含n个整数,每个数组均为int类型。原创 2014-12-10 16:16:48 · 754 阅读 · 0 评论 -
剑指offer系列源码-字符串的排列
题目1369:字符串的排列 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2432解决:609 题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入: 每个测试案例包括1行。 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 输出:原创 2014-12-09 00:40:50 · 1047 阅读 · 0 评论 -
剑指offer系列源码-数组中出现次数超过一半的数字
题目1370:数组中出现次数超过一半的数字 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2844解决:846 题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 输入: 每个测试案例包括2行: 第一行输入一个整数n(1<=n<=100000原创 2014-12-09 11:49:09 · 730 阅读 · 0 评论 -
剑指offer系列源码-1+2+3+...+n
题目1506:求1+2+3+...+n 时间限制:1 秒内存限制:128 兆特殊判题:否提交:1261解决:723 题目描述: 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 输入: 输入可能包含多个测试样例。 对于每个测试案例,输入为一个整数n(1<= n<=100000)。 输出: 对应每个测试案例原创 2014-12-12 14:48:31 · 990 阅读 · 0 评论 -
剑指offer系列源码-判断是否是平衡二叉树
解法1: 暴力遍历,时间复杂度较高。 #include #include using namespace std; struct BinaryTreeNode{ int value; BinaryTreeNode* left; BinaryTreeNode* right; }; int treeDeep(BinaryTreeNode* root){ if(ro原创 2014-12-10 22:38:16 · 606 阅读 · 0 评论 -
剑指offer系列源码-把字符串转换成整数
题目1508:把字符串转换成整数 时间限制:1 秒内存限制:128 兆特殊判题:否提交:1482解决:469 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 输入: 输入可能包含多个测试样例。 对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000)。 输出: 对应每个测试案例, 若输入为一个合法的字符串(即代表一个整数),则原创 2014-12-12 22:05:23 · 724 阅读 · 0 评论 -
剑指offer系列源码-扑克牌顺子
题目1355:扑克牌顺子 时间限制:2 秒内存限制:32 兆特殊判题:否提交:1415解决:398 题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.原创 2014-12-12 14:14:46 · 618 阅读 · 0 评论 -
剑指offer系列源码-复杂链表的复制
题目1524:复杂链表的复制 时间限制:1 秒内存限制:128 兆特殊判题:否提交:606解决:292 题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行为一个整数n (1<=n<=1000):n代表将要输入的链表元素的个数。(节点编号从1开始)原创 2014-12-08 15:32:16 · 539 阅读 · 0 评论 -
剑指offer系列源码-左旋转字符串
题目1362:左旋转字符串(Move!Move!!Move!!!) 时间限制:2 秒内存限制:32 兆特殊判题:否提交:1577解决:669 题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZ原创 2014-12-11 21:13:28 · 688 阅读 · 0 评论 -
剑指offer系列源码-二叉搜索树与双向链表
题目1503:二叉搜索树与双向链表 时间限制:1 秒内存限制:128 兆特殊判题:否提交:870解决:228 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 输入: 输入可能包含多个测试样例。 对于每个测试案例,输入的第一行为一个数n(0<n<1000),代表测试样例的个数。 接下来的n行,每行为一个二叉搜索树的先序遍原创 2014-12-08 16:28:54 · 459 阅读 · 0 评论 -
剑指offer系列源码-八皇后问题
字符串全排列扩展----八皇后问题 题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。 这就是有名的八皇后问题。解决这个问题通常需要用递归,而递归对编程能力的要求比较高。因此有不少面试官青睐这个题目,用来考察应聘原创 2014-12-08 21:51:13 · 1055 阅读 · 0 评论 -
剑指offer系列源码-二叉树的深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 #include #include using namespace std; struct BinaryTreeNode{ int value; BinaryTreeNode* left; BinaryTreeNode* right; }; int原创 2014-12-10 22:26:52 · 542 阅读 · 0 评论 -
剑指offer系列源码-不用加减乘除做加法
题目1507:不用加减乘除做加法 时间限制:1 秒内存限制:128 兆特殊判题:否提交:782解决:581 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 输入: 输入可能包含多个测试样例。 对于每个测试案例,输入为两个整数m和n(1<=m,n<=1000000)。 输出: 对应每个测试案例,输出m+n的值。 样例输入: 3 4 7 9 样例输出: 7原创 2014-12-12 15:12:49 · 759 阅读 · 0 评论 -
剑指offer系列源码-圆圈中最后剩下的数
题目1356:孩子们的游戏(圆圈中最后剩下的数) 时间限制:10 秒内存限制:32 兆特殊判题:否提交:1073解决:391 题目描述: 每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为JOBDU的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为1的小朋友开始报数。每次喊到m的那个小朋原创 2014-12-12 14:29:03 · 850 阅读 · 0 评论 -
剑指offer系列源码-翻转单词顺序
题目1361:翻转单词顺序 时间限制:2 秒内存限制:32 兆特殊判题:否提交:1935解决:572 题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I原创 2014-12-11 21:00:14 · 630 阅读 · 0 评论 -
剑指offer系列源码-最大子向量和(连续子数组的最大和)
题目1372:最大子向量和(连续子数组的最大和) 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2169解决:570 题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天JOBDU测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例原创 2014-12-09 16:32:21 · 796 阅读 · 0 评论 -
剑指offer系列源码-最小的K个数
题目1371:最小的K个数 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5175解决:1092 题目描述: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1<=n,k<=200000),表示数组的长度。 第二行包含n个整数,表示这n个数,数组中的数的范围是[原创 2014-12-09 13:12:28 · 778 阅读 · 0 评论 -
剑指offer系列源码-二叉树的镜像
输入一个二叉树,输出其镜像。 解法:交换所有非叶子结点的左右结点。 #include #include using namespace std; struct BinaryTreeNode{ int value; BinaryTreeNode* left; BinaryTreeNode* right; }; //树的镜像 void reseverBinaryTree(B原创 2014-12-07 22:12:43 · 628 阅读 · 0 评论 -
剑指offer系列源码-打印1到最大的N位数
题目1515:打印1到最大的N位数 时间限制:1 秒内存限制:128 兆特殊判题:否提交:1863解决:925 题目描述: 给定一个数字N,打印从1到最大的N位数。 输入: 每个输入文件仅包含一组测试样例。 对于每个测试案例,输入一个数字N(1<=N<=5)。 输出: 对应每个测试案例,依次打印从1到最大的N位数。 样例输入: 1 样例输出: 1 2 3 4 5 6 7 8 9 #include原创 2014-12-05 16:29:52 · 613 阅读 · 0 评论 -
剑指offer源码-旋转数组的最小数字
题目1386:旋转数组的最小数字 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5659解决:1273 题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入的第一行原创 2014-12-05 11:01:21 · 562 阅读 · 0 评论 -
剑指offer系列源码-二进制中1的个数
题目1513:二进制中1的个数 时间限制:1 秒内存限制:128 兆特殊判题:否提交:3454解决:1218 题目描述: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 输入: 输入可能包含多个测试样例。 对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。 。n保证是int范围内的一个整数。 输出: 对应每个测试案例, 输出一个整数,代表原创 2014-12-05 12:04:50 · 591 阅读 · 0 评论 -
剑指offer源码系列-跳台阶
这是一个斐波那契数列的变形 题目1388:跳台阶 时间限制:1 秒内存限制:32 兆特殊判题:否提交:3030解决:1226 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70)。 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法原创 2014-12-05 11:24:47 · 829 阅读 · 0 评论 -
剑指offer系列源码-斐波那契数列
题目1387:斐波那契数列 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5415解决:1603 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下: 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70)。 输出: 对应每个测试案例, 输出第n项斐波那契数列的值。 样例输入: 3 样例输出原创 2014-12-05 11:20:52 · 896 阅读 · 0 评论 -
剑指offer系列源码-数值的整数次方
题目1514:数值的整数次方 时间限制:1 秒内存限制:128 兆特殊判题:否提交:1549解决:425 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 输入: 输入可能包含多个测试样例。 对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中原创 2014-12-05 17:05:49 · 497 阅读 · 0 评论 -
剑指offer系列源码-替换空格
题目1510:替换空格 时间限制:1 秒内存限制:128 兆特殊判题:否提交:7383解决:1889 题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 输入: 每个输入文件仅包含一组测试样例。 对于每组测试案例,输入一行代表要处理的字符串。 输出: 对应每个测试案例,出经过处理后的原创 2014-12-04 13:19:07 · 596 阅读 · 0 评论 -
剑指offer系列-用两个栈实现队列
oj地址 题目1512:用两个栈实现队列 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2360 解决:804 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 输入: 每个输入文件包含一个测试样例。 对于每个测试样例,第一行输入一个n(1原创 2014-12-04 18:10:26 · 701 阅读 · 0 评论 -
剑指offer系列源码-从尾到头打印链表
ob地址 题目描述: 输入一个链表,从尾到头打印链表每个节点的值。 输入: 每个输入文件仅包含一组测试样例。 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。 样例输入: 1 2 3 4 5 -1 样例输出:原创 2014-12-04 14:59:59 · 745 阅读 · 0 评论 -
剑指offer系列源码-重建二叉树
ob地址 题目1385:重建二叉树 时间限制:1 秒内存限制:32 兆特殊判题:否提交:3609解决:1091 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。 输入: 输入可能包原创 2014-12-04 16:27:53 · 802 阅读 · 0 评论 -
剑指offer系列源码-调整数组顺序使奇数位于偶数前面
题目1516:调整数组顺序使奇数位于偶数前面 时间限制:1 秒内存限制:128 兆特殊判题:否提交:2239解决:715 题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 输入: 每个输入文件包含一组测试案例。 对于每个测试案例,第一行输入一个n,代表该数组中数字原创 2014-12-05 18:24:17 · 480 阅读 · 0 评论 -
剑指offer系列源码-链表中倒数第k个结点
题目1517:链表中倒数第k个结点 时间限制:1 秒内存限制:128 兆特殊判题:否提交:1674解决:750 题目描述: 输入一个链表,输出该链表中倒数第k个结点。 (hint: 请务必使用链表。) 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数原创 2014-12-05 18:32:08 · 501 阅读 · 0 评论 -
剑指offer系列源码-反转链表
题目1518:反转链表 时间限制:1 秒内存限制:128 兆特殊判题:否提交:1952解决:741 题目描述: 输入一个链表,反转链表后,输出链表的所有元素。 (hint : 请务必使用链表) 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000):代表将要输入的链表的个数。 输入的第二行包含n个整数t(0<=t<=1000000)原创 2014-12-07 20:41:43 · 739 阅读 · 0 评论 -
剑指offer系列源码-二叉搜索树的后序遍历序列
题目1367:二叉搜索树的后序遍历序列 时间限制:1 秒内存限制:32 兆特殊判题:否提交:1359解决:684 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 输入: 每个测试案例包括2行: 第一行为1个整数n(1<=n<=10000),表示数组的长度。 第二行包含n个整数,表示这个数组,数组原创 2014-12-08 13:45:43 · 734 阅读 · 0 评论