DataStruct
流浪的侠客
还没有入行的程序猿,坚信自己能成为一个好的程序员。热爱运动旅行烹饪,是个有家天下情怀的青年。
展开
-
有一堆袜子,如何用最快速高效的算法来给袜子配对?
【问题描述】昨天我在整理从洗衣店洗干净的一堆袜子,发现我用的方法非常不高效。我用了一个最简单的方法:拿到一只袜子,然后从头到尾去找另外一只袜子。用这种方法需要重复平均超过 n/2*n/4=n2/8 双袜子。作为一个计算机科学家,我在想我应该怎么做?我立马就想到了根据尺寸颜色排序来得到一个复杂度为O(NlogN)的方法。哈希或其他“非原地”的方法在这里不可取,因为我不可能复制转载 2014-05-06 11:02:25 · 1755 阅读 · 0 评论 -
B树、B-树、B+树、B*树的区别
B树即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入转载 2014-04-19 22:54:24 · 817 阅读 · 0 评论 -
判断一个单链表是否有环及环的连接点
给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少? 解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。2、对于问题2,记录下问题1的碰转载 2014-05-23 21:10:28 · 1450 阅读 · 0 评论 -
寻找节点和最大的子树
问题描述:给一个二叉树,每个节点都是正或负整数,如何找到一个子树,它所有节点的和最大? 思路:采用自底向上的计算。先计算左右子树总和值,用左右子树的总和加上当前节点值,如果当前总和大于最大值,则更新最大值,同时将最大子树根节点更新为当前根。简单说,就是后序遍历。代码:[cpp] view plaincopy原创 2014-10-22 11:11:54 · 1854 阅读 · 0 评论