今天晚間上網轉了轉,看到了,幾條來自微軟(Microsoft)的幾條筆試試題,主要是針對微軟學生中心的實習機會的,諸位如果想到微軟實習的話,可以考慮自己做做看,感覺上對初學者比較困難,本人目前是沒時間寫程式了,最近忙著考試,諸位如果有想法的話,直接留言,或者可以跟我聯絡吧,
第一題 一個整數數列,元素取值可能是 0~65535 中的任意一個數,相同數值不會重複出現 。0 是例外,可以反覆出現。 請設計一個算法,當你從該數列中隨意選取 5 個數值,判斷這 5 個數值是否連續相鄰。
注意: - 5 個數值允許是亂序的。比如: 8 7 5 0 6 - 0 可以通配任意數值。比如:8 7 5 0 6 中的 0 可以通配成 9 或者 4 - 0 可以多次出現。 - 複雜度如果是 O (n2) 則不得分。
試題 2 設計一個算法,找出二元樹上任意兩個結點的最近共同父結點。 複雜度如果是 O (n2) 則不得分。
試題 3 一棵排序二元樹,令 f=(最大值 + 最小值)/2,設計一個算法,找出距離 f 值最近、
大於 f 值的結點。 複雜度如果是 O (n2) 則不得分。
試題 4 一個整數數列,元素取值可能是 1~N(N 是一個較大的正整數)中的任意一個數,
相同數值不會重複出現。設計一個算法,找出數列中符合條件的數對的個數,滿
足數對中兩數的和等於 N+1。 複雜度最好是 O (n),如果是 O (n2) 則不得分。