摘要:
剑指Offer - 九度1514 - 数值的整数次方2013-11-30 00:49题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开。输出:对应每个测试案例,输出一个浮点数代表答案,保留两位小数即可。样例输入:51.0 100.0 -51.0 01.2 52.0 -1样例输出:1.00e+00fINF1.00e+00f2.49e+00f5.00 阅读全文
摘要:
剑指Offer - 九度1513 - 二进制中1的个数2013-11-29 23:35题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。n保证是int范围内的一个整数。输出:对应每个测试案例,输出一个整数,代表输入的那个数中1的个数。样例输入:345-1样例输出:1232题意分析: 这题是《编程之美》的原题了,只需要了解两个很巧妙的位操作:x & (-x),x & (x - 1)。 x & (-x)是树状数组的lowbit操 阅读全文
摘要:
剑指Offer - 九度1512 - 用两个栈实现队列2013-11-29 21:23题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。输入:每个输入文件包含一个测试样例。对于每个测试样例,第一行输入一个n(1=0)2. POP 从队列中pop一个数。输出:对应每个测试案例,打印所有pop操作中从队列pop中的数字。如果执行pop操作时,队列为空,则打印-1。样例输入:3PUSH 10POPPOP样例输出:10-1题意分析: 用两个栈实现一个队列。栈(stack)的特点是先进后出,是反的;而队列(queue)的特点是先进先出,是正的。因此用两个栈,反. 阅读全文
摘要:
剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08题目描述:输入一个链表,从尾到头打印链表每个节点的值。输入:每个输入文件仅包含一组测试样例。每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。输出:对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。样例输入:12345-1样例输出:54321题意分析: 给定一条单链表,从未到头打印出来。第一个念头是可以用头递归的写法进行倒序输出,但不论头递归还是尾递归都不是个会写代码的人该写出来的,. 阅读全文
摘要:
剑指Offer - 九度1510 - 替换空格2013-11-29 20:53题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。输入:每个输入文件仅包含一组测试样例。对于每组测试案例,输入一行代表要处理的字符串。输出:对应每个测试案例,出经过处理后的字符串。样例输入:We Are Happy样例输出:We%20Are%20Happy题意分析: 题目给出的需求很简单,将空格‘ ’编码成%20,这就是传统的urlencode功能。对于这种单字符的匹配,很容易硬编码实现。但如果匹配的模. 阅读全文
摘要:
剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。输入:输入可能包含多个测试样例。对于每个测试案例,输入为两个整数m和n(1 4 using namespace std; 5 6 void cal_onebit(const int m, const int n, int i, int &carry, int &res) 7 { 8 res = (res | 9 (10 (m & (1 << i)) ^ 11 ... 阅读全文
摘要:
剑指Offer - 九度1506 - 求1+2+3+...+n2013-11-29 19:22题目描述:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个整数n(1 4 using namespace std; 5 6 void add2(long long int &x, long long int &y, int i, int j, long long int &res) 7 { 8 res += (((!!(x & 阅读全文
摘要:
剑指Offer - 九度1505 - 两个链表的第一个公共结点2013-11-24 20:09题目描述:输入两个链表,找出它们的第一个公共结点。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行为两个整数m和n(1 4 using namespace std; 5 6 struct ListNode{ 7 int val; 8 struct ListNode *next; 9 ListNode(int _val = 0): val(_val), next(NULL){} 10 }; 11 12 void delete_list(ListNod... 阅读全文
摘要:
剑指Offer - 九度1391 - 顺时针打印矩阵2013-11-24 04:55题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行包括两个整数m和n(1 4 using namespace std; 5 6 int m, n; 7 const int MAXN = 1005; 8 int a[MAXN][MAXN]; 9. 阅读全文
摘要:
剑指Offer - 九度1389 - 变态跳台阶2013-11-24 04:20题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1 4 using namespace std; 5 6 int main() 7 { 8 int n; 9 10 while(scanf("%d", &n) == 1){11 printf("%lld\n", 1LL << (n - 1));12 }13 14 ... 阅读全文