出题:Josephus
Cycle,约瑟夫环问题。k个数字连成一个环,第一个数字为1。首先从1开始计数删除第m个数字;然后从上次被删除的数字的下一个数字开始计数,删除第m个数字;重复进行第二步直到只剩下一个数字;输出最后剩下的一个数字;分析:解法1:考虑到问题的特殊性,可以使用哑元素表示删除的元素从...
分类:
其他好文 时间:
2014-05-27 01:35:42
阅读次数:
251
出题:要求实现层序遍历二元搜索树,并对比BFS与DFS的区别分析:层序遍历也就是由上至下,从左到右的遍历每一层的节点,类似于BFS的策略,使用Queue可以实现,BFS不能用递归实现(由于每一层都需要存储所有节点,所以非常耗用内存)。这段代码主要用于反映BFS与DFS的联系;解题:
1 class....
分类:
其他好文 时间:
2014-05-27 01:11:41
阅读次数:
398
A、B两个整数集合,设计一个算法求他们的交集。
代码留作记录,本人水平有限,看了别人的解法真是自愧不如。
关于此题的详细探讨可以参考:http://blog.csdn.net/thebestdavid/article/details/12056293...
分类:
其他好文 时间:
2014-05-20 14:59:37
阅读次数:
245
出题:输入一个整数数组,判断该数组是否符合一个二元查找树的后序遍历(给定整数数组,判定其是否满足某二元查找树的后序遍历);分析:利用后序遍历对应到二元查找树的性质(序列最后一个元素必定是根节点,从左向右第一个比根节点大的元素开始直到根节点之前的所有元素必定在右子树,之前的所有元素必定在左子树);解题...
分类:
其他好文 时间:
2014-05-19 12:13:54
阅读次数:
357
出题:输入一个单向链表,要求输出链表中倒数第K个节点分析:利用等差指针,指针A先行K步,然后指针B从链表头与A同步前进,当A到达链表尾时B指向的节点就是倒数第K个节点;解题:
1 struct Node { 2 int v; 3 Node *next; 4 }; 5 ...
分类:
其他好文 时间:
2014-05-19 12:07:16
阅读次数:
376
出题:输入一个已经升序排序的数组和一个数字;要求在数组中查找两个数,这两个数的和正好等于输入的那个数字,输出任意一对数字就可以,要求时间复杂度是O(n);分析:对于升序排序的数组{…i…j…k…m……},只有可能是i+m=j+k(j和k可能是同一个数),所以可以从两边往中间收缩而忽视其他交叉相加的情...
分类:
其他好文 时间:
2014-05-19 12:04:14
阅读次数:
357
出题:把二元查找树转变成排序的双向链表。输入一棵二元查找树,要求将该二元查找树按照中序转换成一个排序的双向链表,要求不能创建任何新的节点,只能调整指针的指向;分析:递归的思路,当前节点需要进行的处理,并使用递归调用和返回值将子问题链接起来;首先明白二元查找树的特性,变成有序双向链表后当前根节点的左节...
分类:
其他好文 时间:
2014-05-19 10:02:49
阅读次数:
381
出题:预先输入一个整型数组,数组中有正数也有负数;数组中连续一个或者多个整数组成一个子数组,每个子数组有一个和;求所有子数组中和的最大值,要求时间复杂度O(n);分析:时间复杂度为线性表明只允许一遍扫描,当然如果最终的最大值为0表明所有元素都是负数,可以用线性时间O(N)查找最大的元素。具体算法策略...
分类:
其他好文 时间:
2014-05-18 20:21:35
阅读次数:
339
1.搜狐技术中心笔试遇到的题目描述:假设滑动一次需要1秒,新出现是4的概率很小可以忽略,加到2048的需要的时间最少是多少?分析:全部由2相加,得到4需要1次相加,得到8需要3次相加……得到2048需要1024-1次相加(1024-1)/60约为17分钟实际上,在进行加法前可能需要等待
新元素2的出...
分类:
其他好文 时间:
2014-05-18 20:07:59
阅读次数:
415
前几天去UC笔试,有一道简答题问到了。之前还真一直没留意到这个问题,所以答得也不好。无论学习什么都好,通过对比学习更有利于发现事物的共性和个性,对于知识点的理解更有明显效果(这也可能是UC笔试题上,5道简答题中,有4道都是关于X与Y的区别的问题的原因之一)。既然自己答得不好,那就写下这篇随笔,来警示...
分类:
编程语言 时间:
2014-05-18 19:33:06
阅读次数:
363