今晚連著面了三輪依圖。。毫無間隔。。累pee= =
第一輪
自我介紹+介紹項目
算法題1
一個長度為n的數組,其中有一個數字出現次數大于n/2次,找出這個數字。
這個題貌似是個競賽經典題。。之前一個同事給我講過這個題,但是我給忘了!但是現場給出了兩種解法。。第三種面試官怎么提示都想不出了。。
第一種:一個dictionary記每個元素出現次數,如果出現次數大于n/2,中斷當前遍歷并返回,O(n)的復雜度
第二種:轉換為找第n/2大的數字的問題,解決。平均O(n) //我當時第一次說的是排序之后然后中間那個數字就是要找的,結果面試官讓我寫排序算法,我寫著寫著快排反應過來的。。
查了一下,是http://blademastercoder.github.io/2015/02/04/leetcode-MajorityElement.html 的思路2的解法
算法題2
給出一個m行n列的矩陣,由元素0和1組成,元素0表示當前位置可以走,元素1表示當前位置是圍墻不能走。找出從(x0, y0)到(x1, y1)的任意一條路徑
深度優先搜索
第二輪
自我介紹+職業規劃聊天=。=
算法題1
n皇后問題,n*n矩陣里放n個皇后,給出一種解法
算法題2
已有一個Rand2()函數,可以等概率地生成0和1(都是1/2),問利用這個函數如何等概率地生成0, 1, 2, 3, 4, 5, 6。
面試官給出提示,先考慮如何等概率地生成0-7
每個出現的概率是1/8,這個可以用三位二進制表示法,每位是一個Rand2()
然后到等概率地生成0-6,只需在生成111的時候,再生成一次就可以
第三輪
自我介紹+項目介紹
算法題1
進階:
算法題2
然鵝我還是不知道解法現場想的。。。
進階:
從最多只能進行一次買賣改為最多可以進行兩次買賣,問最大收益是多少
這個面到第三面腦子已經完全不轉了。。。面試官給的解法。。
從前往后掃一次,找前i天最大收益A[i];從后往前掃一次,找后i天最大收益B[i];這兩個可以一次遍歷做完。
然后再遍歷一遍,找A[i]+B[i]最大值
最后的吐槽。。無間斷連續三場(我開始還以為只面一場。。也怪自己沒問清楚。。于是晚飯都沒吃就去了。。還好男票在面試前跑去給買了面包和水,在前兩場中間塞了一個面包= =)還是挺懵以及挺難一直集中注意力的。。一個大屋子里,就3v3的面試別人說話也聽得很清楚,于是話到了腦子里腦子就會處理一下,于是思路也就會斷一下= =不過感覺面試官都很有趣~他們做的東西也都挺有趣的233(感覺自己被洗腦成功了。。