1.解释实现多线程的几种方法?一 Java 线程可以实现 Runnable 接口或者继承 Thread
类来实现,当你打算多重继承时,优先选择实现 Runnable。2.Thread.start ()与 Thread.run
()有什么区别?Thread.start ()方法(native)启动线程...
分类:
编程语言 时间:
2014-05-23 08:37:33
阅读次数:
311
如题所示,题目很简单,替换空格,将字符串中的空格替换为%20;
即"we are happy”替换成“we%20are%20happy”;
如果每当我们遇到一个空格就将字符串向后平移两位,这样复杂度就是O(n2)了,这样的方法是不可取的,按照作者的来说,offer已不足拿到了;
而当我们反向从字符串末尾开始遍历,复杂度仅为O(n),当然前提的是该字符串有足够空间,否则替换会失败。
了解到思想之后程序也就比较简单了,发现自己的与作者的写的也比较类似,就此贴上了......
分类:
其他好文 时间:
2014-05-22 12:25:54
阅读次数:
201
【题目】
原文:
2.1 Write code to remove duplicates from an unsorted linked list.
FOLLOW UP
How would you solve this problem if a temporary buffer is not allowed?
译文:
从一个未排序的链表中移除重复的项
...
分类:
其他好文 时间:
2014-05-22 12:04:13
阅读次数:
196
剑指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上的第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上的第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
题目:很简单,就是题目,将链表从尾到头打印出来。
可能我们首先想到的是将链表进行遍历,将之前的访问的数据进行保存,最后进行反向输出,可是保存数据的空间是个问题;或者是我们将整个链表进行反向操作,将整个链表进行逆置,可是我们只是进行打印操作而已,改变链表不合适吧...
其实这时候应该想到了,用栈:既然是逆置,和栈的功能不就不谋而合吗,后进先出,进行反向打印。...
分类:
其他好文 时间:
2014-05-22 06:41:25
阅读次数:
255
与上篇思想一样,或者说是替换数字的另一种版本吧,题目如下:
有两个已经排好的数组A1和A2,A1的末尾有足够的空间来容纳A2,我们将A2数组插入到A1中,继续保持已经排序;
这样看来就和替换空格相似了,如果我们在A1数组从头到尾复制数字,这样导致A1数组后面的数一直不断往后移动,复杂度一样是O(n2),所以,我们来举一反三:...
分类:
其他好文 时间:
2014-05-22 06:14:10
阅读次数:
241
问题:
求两个数的最大公约数
解法一:
欧几里得辗转相除法:
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
大数相加
[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