- 博客(5)
- 资源 (8)
- 收藏
- 关注
原创 二叉树两个结点的最低共同父结点(树)
题目:二叉树的结点定义如下:struct TreeNode{ int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight;};输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。解法:要想找到两个节点的最低共同父结点,其实就是找一个节点,使得它的左子树包含两个结点中的一个结点,右子树包含另
2012-07-30 20:11:47 5908
转载 复杂链表的复制
题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下: struct ComplexNode{ int m_nValue; ComplexNode* m_pNext; ComplexNode* m_pSib
2012-07-30 19:49:06 2169
转载 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
最大子序列最大子序列是要找出由数组成的一维数组中和最大的连续子序列。比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大;而 {5,-6,4,2}的最大子序列是{4,2},它的和是6。你已经看出来了,找最大子序列的方法很简单,只要前i项的和还没有小于0那么子序列就一直向后扩展,否则丢弃之前的子序列开始新的子序列,同时我们要记下各个子序列的和,最后找到和最大的子序
2012-07-28 20:52:29 2888
原创 将硬币分成正面朝上个数相等的两堆
原问题:现在有N个硬币,其中有M个硬币正面朝上,如何在当你被蒙上眼睛且不能摸出硬币正反面的情况下将硬币分成正面朝上相等的两堆。分析:注意该问题并未说不可以翻转硬币,且最后的最后朝上的硬币总数量也不一定是M,故可以采用如何方法来分。解法:将硬币分成两堆,大小分别为N-M和M,然后将大小为M堆的硬币进行一次翻转,则使得两堆正面朝上的硬币数量相等。解释:设M堆
2012-07-24 23:57:07 8388
原创 约瑟夫问题 大家一起来解决
本文之所以引出这个问题,是因为该问题曾经作为微软的一道面试问题出现,约瑟夫环问题原题为:已知n个人(以编号0,1,2,3...n-1分别表示)围坐在一张圆桌周围。从编号为0的人从0开始报数,数到m-1的那个人出列;他的下一个人又从0开始报数,数到m-1的那个人又出列;依此规律重复下去,给出最后一个出列的人的编号。首先该问题最简单的一个解法是采用链表进行模拟,在此不作解释。至于归纳法解决
2012-07-24 00:26:58 2896
Real-Time-Rendering
2015-08-17
斐波那契堆
2011-12-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人