笔试/面试题

  1. 老鼠和毒酒问题:1000瓶酒其中1瓶有毒,用10只老鼠找出毒酒。
    解题方法1:折半查找法。取500瓶内各一滴,看老鼠是否死亡,以此排除一半的酒。
    解题方法2:转换为二进制法。1-1000都可以用10位2进制数表示,设x10 = 10010111012,则将第x瓶酒滴入二进制位为1的位对应的碗中,然后让10只老鼠各喝一个碗中的酒,可得到毒酒对应的二进制。

  2. 子数组最大和问题:输入一个整数数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,求子数组和的最大值。要求时间复杂度为O(n)。
    解法:动态规划。
    设dp[i]表示以第i个数结束的子数组的最大和,那么dp[i+1] = max(dp[i] + nums[i+1], nums[i+1])。子数组和的最大值为dp数组中的最大值。

  3. 买饮料问题:三个瓶盖可以换一瓶饮料,要喝100瓶饮料,最少需要买多少瓶?
    解法:2瓶饮料+1个瓶盖 = 3瓶饮料+1个瓶盖。因此需要买2 x (100/3) + 1 = 67瓶。最后一瓶正好作为启动。

  4. 生成数组(不能用除法):给你一个数组A[1..n],请你在O(n)的时间里构造一个新的数组B[1..n],使得B[i]=A[1] x A[2] x … x A[n] / A[i]。你不能使用除法运算。
    解题方法:改造辅助数组。任意B[i] = A[1] x A[2] x ... x A[i-1] x A[i+1] x ... x A[n]。构造辅助数组C[1..n-1], D[1..n-1],其中C[i] = A[1] x A[2] x ... x A[i],D[i] = A[i] x ... x A[n]。构造C、D数组都是O(n)复杂度,最后由C、D数组得到B数组也是O(n)复杂度。

  5. 互信息的计算:I(A, B) = log2P(AB)/(P(A)P(B)) = log2p(A|B)/P(A) = log2P(B|A)/P(B)

  6. 算法设计题:已知计算机有以下原子操作:1). 赋值操作:b = a; 2). ++a和a+1; 3). for( ){ ***}有限循环; 4). 操作数只能为0或者正整数; 5). 定义函数实现加减乘操作。要求实现加减乘除操作。
    解题hint:首先想办法实现-1的功能。

fun_dec(n){
    a = 0
    b = 0
    for(n times){
        b = a
        ++a
    }
    return b
}

有了-1功能即可实现减法,有了加法减法即可实现乘法除法。

  1. 【数据结构类】实现一个对链表排序的算法,C/C++可以使用std::list<int>,Java使用LinkedList<integer>要求先描述算法,然后再实现,算法效率尽可能高效。
    解题hint:递归进行归并排序。使用快慢指针可以快速找到链表的中间位置(满指针走一步,快指针走两步,块指针到达链表末尾则慢指针到达链表中间位置)。

  2. 匈牙利法求最优任务分配。

  3. 走两趟格子:有n*n个格子,每个格子里有正数或者0,从最左上角往最右下角走,只能向下和向右,一共走两次(即从左上角走到右下角走两趟),把所有经过的格子的数加起来,求最大值SUM,且两次如果经过同一个格子,则最后总和SUM中该格子的计数只加一次。
    解题报告:一篇博文
    需要DP两次走的状态。
    状态转移:

if(i != j) 
    DP[s, i ,j] = Max(DP[s - 1, i - 1, j - 1], DP[s - 1, i - 1, j], DP[s - 1, i, j - 1], DP[s - 1, i, j]) + W[s,i] + W[s,j] 
else 
    DP[s, i ,j] = Max(DP[s - 1, i - 1, j - 1], DP[s - 1, i - 1, j], DP[s - 1, i, j]) + W[s,i]
  1. N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列。设计加密解密算法,且要求K<=15N.如果是:
    1). N<=16,要求K<=16N.
    2). N<=16,要求K<=10N.
    3). N<=64,要求K<=15N.
    我表示连题都看不懂,看了网上答案发现主要是对第i个数字第k位是什么进行编码。

  2. 一个字符串中含有n个字符,其中有m个不同的字符,n>>m,用最少的时间和空间找到包含所有这m个字符的最短的字串,不考虑特殊字符,只考虑字母数字即可。
    例如:abccbaddac, 返回:cbad
    aabcadbbbcca,返回:bcad
    解题方法:设不同的字母共有m个,首先从左往右找到第一个包含所有字母的子串,长度为L,然后从L-m处开始重新寻找。取找到的最短长度即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容