随笔分类 -  1 Algorithm Design

Algorithms and Data structure
摘要:参考:http://xudacheng06.blog.163.com/blog/static/4894143320127891610158/杨氏矩阵(Young Tableau)是一个很奇妙的数据结构,他类似于堆的结构,又类似于BST的结构,对于查找某些元素,它优于堆;对于插入、删除它比BST更方便... 阅读全文
posted @ 2013-09-01 14:39 Avril 阅读(4417) 评论(0) 推荐(0)
摘要:1.10 双线程高效下载伪码给出了典型的生产者消费者问题解答,用一个信号量(semaphore)表示剩余空闲块数(g_seEmpty),一个信号量表示已下载记录数(g_seFull)。下载线程中消耗空闲块,所以先g_seEmpty.Unsignal(),相当于P(g_seEmpty),完成后g_se... 阅读全文
posted @ 2013-08-30 11:19 Avril 阅读(427) 评论(0) 推荐(0)
摘要:据传说是MS/Google等等IT名企业的面试题:有一组数字,从1到n,中减少了一个数,顺序也被打乱,放在一个n-1的数组里请找出丢失的数字,最好能有程序,最好算法比较快BTW1: 有很多种方法的哦,据说O(n)的方法就不止一种BTW2: 扩展问题,如果丢失了2个数字呢?BTW3: 一定要小心不要溢... 阅读全文
posted @ 2013-08-29 10:22 Avril 阅读(1602) 评论(1) 推荐(1)
摘要:>>最近了解了一些题目,其中对棋盘或者是汉诺塔的表示一般都用到了状态压缩的方法,配合BFS或者是DP来做。题目链接:汉诺塔移动http://stackoverflow.com/questions/16601701/facebook-sample-puzzle-towers-of-hanoi黑白棋游戏... 阅读全文
posted @ 2013-08-26 12:12 Avril 阅读(9466) 评论(0) 推荐(0)
摘要:题目:给出n个互不相同的字符, 并给定它们的相对大小顺序,这样n个字符的所有排列也会有一个顺序.现在任给一个排列,求出在它后面的第i个排列.这是一个典型的康拓展开应用,首先我们先阐述一下什么是康拓展开。(1)康拓展开 所谓康拓展开是指把一个整数X展开成如下形式: X=a[n]*(n-1)!+a[... 阅读全文
posted @ 2013-08-26 12:04 Avril 阅读(420) 评论(0) 推荐(0)
摘要:英文原文:http://corner.squareup.com/2013/07/reversing-bits-on-arm.html本文讲解翻转bit位的一些方法,例如如何将1001 1101变为1011 1001.另参考:http://www.cnblogs.com/xueda120/p/3151... 阅读全文
posted @ 2013-08-13 21:14 Avril 阅读(285) 评论(0) 推荐(0)
摘要:http://coolshell.cn/articles/1202.html据说,这是Google的面试题。面试题目如下:一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问,最少得比多少场才能知道跑得... 阅读全文
posted @ 2013-08-06 21:50 Avril 阅读(1069) 评论(0) 推荐(0)
摘要:暂时没有时间整理,先放在这里:http://www.quora.com/Prime-Numbers/What-are-good-ways-to-find-nth-prime-number-in-the-fastest-way——————————————————————————————————————... 阅读全文
posted @ 2013-07-06 21:36 Avril 阅读(1051) 评论(0) 推荐(0)
摘要:vector常用方法assign() 对Vector中的元素赋值void assign( input_iterator start, input_iterator end ); //void assign( size_type num, const TYPE &val );reserve() 设置V... 阅读全文
posted @ 2013-07-06 15:16 Avril 阅读(12023) 评论(0) 推荐(0)
摘要:总体分两个部分,一个是:http://hi.baidu.com/bellgrade/item/179ff5374b74eef6e7bb7aa6写的比较容易理解。另一个是 http://book.51cto.com/art/201202/317767.htm有具体代码说明,更具体。——————————... 阅读全文
posted @ 2013-07-06 15:04 Avril 阅读(40587) 评论(2) 推荐(5)
摘要:问题假设有一个硬币,抛出字(背面)和花(正面)的概率都是0.5,而且每次抛硬币与前次结果无关。现在做一个游戏,连续地抛这个硬币,直到连续出现两次字为止,问平均要抛多少次才能结束游戏?注意,一旦连续抛出两个“字”向上游戏就结束了,不用继续抛。 上面这个题目我第一次见到是在pongba的TopLanguage的一次讨论上,提出问题的人为Shuo Chen,当时我给出了一个解法,自认为已经相当简单了,先来考虑一下抛硬币的过程:首先先抛一枚硬币,如果是花,那么需要重头开始;如果是字,那么再抛一枚硬币,新抛的这枚如果也是字,则游戏结束,如果是花,那么又需要重头开始。根据这个过程,设抛硬币的期望次数为T, 阅读全文
posted @ 2013-06-28 20:28 Avril 阅读(29808) 评论(0) 推荐(0)
摘要:简单来讲,排列和组合问题各分为两类,有重复和无重复。套上subsets模板后非常简单。1.排列1.1无重复字符有两种思路,一种基于swap,另一种基于判断前面是否已经出现。1.1.1基于swap的方法 1 class Solution { 2 public: 3 vector > permu... 阅读全文
posted @ 2013-06-08 15:16 Avril 阅读(1874) 评论(0) 推荐(0)
摘要:参见:http://blog.csdn.net/doc_sgl/article/details/8888904附:士兵两两通话,最小通话次数比如说假设有k个种子(k个人进行消息融合)算法就是:f(n) = n-k + f(k) + n-k= 2n + f(k) -2k就是说要找使f(k) - 2k最... 阅读全文
posted @ 2013-05-20 13:08 Avril 阅读(825) 评论(0) 推荐(0)
摘要:近期一次笔试中考到了这个题目,答题之后回来再看,发现网上的解答有些十分复杂,让人懒得去看。隐约记得之前学习计算机图像学的课程时有这个算法。我把自己的思路记下来,如有遗漏情况没有考虑或者方法有问题,欢迎拍砖:P问题定义:给定两个边与坐标轴平行的矩形,分别由左上角与右下角两点指定,即矩形(P1,P2)与(P3,P4),判断两矩形是否相交。我的思路:如下图所示,首先求出P1与P3点在X方向较大值与Y方向较大值的交点,在下图中就是P3,用红点(记为M点)表示。然后求出P2与P4点在X方向较小值与Y方向较小值的交点,在下图中就是P2,用橙色点(记为N点)表示。如果M点的X坐标和Y坐标值均比N点相应的X坐 阅读全文
posted @ 2013-04-01 17:08 Avril 阅读(29696) 评论(2) 推荐(1)
摘要:// CppReference.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"using namespace std;/* * 说明:字符串拷贝版本1 * 参数:dest目标地址,src源地址 * 返回:返回拷贝好的地址;如果出错或者有重叠,无定义 * 异常:可能出现字符串溢出,及dest所占空间不如src所占空间大。 */char *strcpy_v1(char *dest , const char *src){ //调试时,使用断言,入口检测 assert( (dest!=NULL) && (src!=NULL) ); 阅读全文
posted @ 2013-03-04 17:01 Avril 阅读(754) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/wangzhiqing3/article/details/7447933面试中常问的非技术类问题:1.简单介绍一下你自己。2.对自己做个评价,优点、缺点。3.自己做过的项目,详细介绍一下。4.实习经历,在实习过程中遇到哪些问题,如何解决的?5.你对公司有什么问题要问吗(对公司有什么要了解的)?技术类的问题主要就看对技术的掌握程度和自己的综合能力了。百度移动终端研发工程师笔试题,题量不大,2个小时,有点难度。1.写一个字符串逆序的程序,时间复杂度和空间复杂度最低,效率越高越好。2.实质:二叉树的层序遍历,每层的结点用单链表输出。3.1-N(N最大3200 阅读全文
posted @ 2013-02-08 18:48 Avril 阅读(559) 评论(0) 推荐(1)
摘要:问题:给定两个矩形A和B,矩形A的左上角坐标为(Xa1,Ya1),右下角坐标为(Xa2,Ya2),矩形B的左上角坐标为(Xb1,Yb1),右下角坐标为(Xb2,Yb2)。(1)设计一个算法,确定两个矩形是否相交(即有重叠区域)(2)如果两个矩形相交,设计一个算法,求出相交的区域矩形(1)对于这个问题,一般的思路就是判断一个矩形的四个顶点是否在另一个矩形的区域内。这个思路最简单,但是效率不高,并且存在错误,错误在哪里,下面分析一下。如上图,把矩形的相交(区域重叠)分成三种(可能也有其他划分),对于第三种情况,如图中的(3),两个矩形相交,但并不存在一个矩形的顶点在另一个矩形内部。所以那种思路存在 阅读全文
posted @ 2012-11-13 10:39 Avril 阅读(13096) 评论(1) 推荐(1)