google面試題(二)

2021-08-29 11:54:41 字數 433 閱讀 9331

平面上n個點,求一條直線,穿過的點數最多

思路:2點確定一條線,n個點共有n(n-1)/2條線,穿過的點數最多的直線,斜率相同的最多,因此只要找出相同斜率最多的點對集合,並且有公共點的即可

方法一:用上三角矩陣,矩陣裡的值為任意兩點的斜率,上三角矩陣用陣列a[0..n(n-1)/2]表示。問題就轉化為求陣列中相同數最多的並且有公共點的數,方法參照「[微軟面試題]請把乙個整形陣列中重複的數字去掉」。

時間複雜度0(n^2)

方法二:平面上n個點以及這n個點構成的無向圖,邊數n(n-1)/2,對圖遍歷(深度或廣度),遍歷到某個點node的時候,計算該點與它的前乙個點的斜率r,用pr儲存前乙個點與它的前結點的斜率,如果pr!=r,則返回到node,繼續遍歷node的下一條邊,如果斜率相等,則count++。如果找不到,則從一下結點開始遍歷未訪問過的節點。

時間複雜度0(n^2)

Google 的面試題

一輛學校班車裡面能裝多少個高爾夫球?你被縮小到只有硬幣厚度那麼點高 不是壓扁,是按比例縮小 然後被扔到乙個空的玻璃攪拌器中,攪拌刀片一分鐘後就開始轉動。你怎麼辦?要是讓你清洗整個西雅圖的所有窗子,你會收取多少費用?怎麼才能識別出電腦的記憶體堆疊是向上溢位還是向下溢位?你要向你8歲的侄子解釋什麼是資料...

Google面試題(六)

題目 對現在的stack 棧 資料結構進行改進,加乙個min 功能,使之能在常數,即o 1 時間內給出棧中的最小值。可對push 和pop 函式進行修改,但要求其時間複雜度都只能是o 1 分析 要使pop,push,min都是o 1 所以肯定要犧牲點空間 思路 1 在stack的資料結構中加兩個個字...

google雜湊面試題

題目 在乙個字串中找到第乙個只出現一次的字元。如輸入abaccdeff,則輸出b。用雜湊表解題 分析 這道題是2006年google的一道筆試題。解 由於字元 char 是乙個長度為8的資料型別,因此總共有可能256 種可能。於是我們建立乙個長度為256的陣列,每個字母根據其ascii碼值作為陣列的...