码迷,mamicode.com
首页 >  
搜索关键字:剑指offer c++    ( 3728个结果
替换空格--《剑指offer》
如题所示,题目很简单,替换空格,将字符串中的空格替换为%20; 即"we are happy”替换成“we%20are%20happy”; 如果每当我们遇到一个空格就将字符串向后平移两位,这样复杂度就是O(n2)了,这样的方法是不可取的,按照作者的来说,offer已不足拿到了; 而当我们反向从字符串末尾开始遍历,复杂度仅为O(n),当然前提的是该字符串有足够空间,否则替换会失败。 了解到思想之后程序也就比较简单了,发现自己的与作者的写的也比较类似,就此贴上了......
分类:其他好文   时间:2014-05-22 12:25:54    阅读次数:201
【剑指offer】栈的压入弹出序列
剑指offer上的第22题,九度OJ上AC。 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 输入: 每个测试案例包括3行: 第一行为1个整数n(1<=n<=100000),表示序列的长度。 第二行包含n个整数,表示栈的压入顺序。 第三行包含n个整数,表示栈的弹出顺序。 输出: 对...
分类:其他好文   时间:2014-05-22 10:10:28    阅读次数:286
【剑指offer】从上向下打印二叉树
剑指offer上的第23题,实际上就是考察二叉树的层序遍历,具体思想可以参考这里。 题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行一个整数n(1<=n<=1000, :n代表将要输入的二叉树元素的个数(节点从1开始编号)。接下来一行有n个数字,代表第i个二叉树节点的元素的值。接下来有n行,每行有一个字母Ci。 Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。 Ci=’l’表示第i个...
分类:其他好文   时间:2014-05-22 08:29:03    阅读次数:306
【剑指offer】包含min函数的栈
剑指offer上的第21题,之前在Cracking the Coding interview上做过,思路参考这里,这次写了测试函数,在九度OJ上测试通过。 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000000), n代表将要输入的操作的步骤数。 接下来有n行,每行开始有一个字母Ci。 Ci=’s’时,接下有一个数字k,代表将k压入栈。 Ci=’o’时,...
分类:其他好文   时间:2014-05-22 07:15:30    阅读次数:318
剑指OFFER之用两个栈实现队列(九度OJ1512)
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。输入:每个输入文件包含一个测试样例。对于每个测试样例,第一行输入一个n(1=0)2. POP 从队列中pop一个数。输出:对应每个测试案例,打印所有pop操作中从队列pop中的数字。如果执行pop操作时,队列...
分类:其他好文   时间:2014-05-21 19:24:16    阅读次数:192
【剑指offer】复杂链表的复制
题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行为一个整数n (1<=n<=1000):n代表将要输入的链表元素的个数。(节点编号从1开始)。 接下来有n个数,表示链表节点中的值。 接下来有n个数Ti,Ti表示第i个节点的另一个指针指向。 Ti = 0 表示这个指针为NULL。 输出: 对应每个测试案例, 输出n行,每行有二个数,第一个代表当前节点值,第...
分类:其他好文   时间:2014-05-21 16:29:40    阅读次数:174
【剑指offer】字符串的组合
剑指offer上的拓展题目,输入一个字符串,输出该字符串的字符的所有组合,比如输入字符串:abc,输出a、b、c、ab、ac、bc、abc。 思路:与上一题类似,也可以用递归求解。可以考虑求长度为n的字符串中m个字符的组合,设为C(n,m)。原问题的解即为C(n, 1), C(n, 2),...C(n, n)的总和。对于求C(n, m),从第一个字符开始扫描,每个字符有两种情况,要么被选中,要么不被选中,如果被选中,递归求解C(n-1, m-1)。如果未被选中,递归求解C(n-1, m)。不管哪种方...
分类:其他好文   时间:2014-05-21 14:02:03    阅读次数:197
编程之美之2.7 最大公约数问题
问题: 求两个数的最大公约数 解法一: 欧几里得辗转相除法: f(x,y) = GCD(x,y), 取k = x / y, b = x % y,则:x = k*y + b; 如果一个数能整除x,y,则它也能整除b,y; 而且能整除b,y的数必能整除x,y,即x,y和b,y的公约数是相同的,其最大公约数也是相同的,即f(x,y) = f(y ,x % y) (x>=y>0)...
分类:其他好文   时间:2014-05-21 09:28:26    阅读次数:275
编程之美之2.5 寻找最大的K个数
【题目】 有很多无序的数,从中找出最大的K个数。假定他们都不相等。 【解法一】 如果数据不是很多,例如在几千个左右,我们可以排一下序,从中找出最大的K个数。排序可以选择快速排序或者堆排序 [cpp] view plaincopy #include   #include   int cmp(const void *a,const ...
分类:其他好文   时间:2014-05-21 07:30:07    阅读次数:234
算法之大数问题
大数相加 [cpp] view plaincopy #include   #include      char a[10001],b[10001],sum[10002];      int BigIntegerAdd(){       //两个数的长度       int lena = strlen(a);       int l...
分类:其他好文   时间:2014-05-21 06:32:32    阅读次数:361
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!