随笔分类 - 算法
摘要:假设提供了以下方法:
bool GetBlockFromNet(Block *out_block);
bool WriteBlockToDisk(Block *in_block);
想实现高效当然是创建两个线程,A负责获取网络数据,B负责写入数据到硬盘,难点在于如何合理分配两个线程之间的工作!
阅读全文
摘要:问题:由于楼层并不高,在繁忙时段,每次电梯从一层往上走时,我们只允许停到其中某一层。所有乘客再从这层去往自己的目的楼层。
电梯停在哪一层,能够保证乘客爬楼梯之和最少?
阅读全文
摘要:问题:如何快速计算某个时刻,在X[A,B]区间上的地板被光影划分成多少块?
阅读全文
摘要:问题:假设一台机器仅保存一个标号为ID的记录,每份数据有两个备份,分别存储到两台机器中。
1.在某个时间,如果得到一个数据文件ID列表,能否快速找出仅出现一次的ID?
2.如果已经知道只有一台机器死机呢?如果有两台机器死机呢?
(假设同一数据两个备份不会同时丢失)
阅读全文
摘要:问题:如果一个二维坐标系中,已知三角形三个点的坐标,那么对于任意一点,如何判断其在三角形内呢?(点在三角形边上也算在三角形内)
阅读全文
摘要:判断一个单链表是否存在环的解法如下:
1.遍历链表,将链表的节点存入hash表内,若遍历到后面的节点已存在hash表内,说明有环。时间:O(n) 空间:O(n)
2.反转链表,时间:O(n) 空间:O(1),使用3个指针:pNext、pPrev、pCur。这种方法有副作用,就是若存在环的话,无法还原到链表原始状态。(弃用)
3.快慢指针法,时间:O(n) 空间:O(1)。
阅读全文

浙公网安备 33010602011771号