阿里巴巴筆試題目妙解 接示本質的解法

2021-08-27 07:31:33 字數 485 閱讀 9704

阿里巴巴有如下的筆試題目:

有乙個神奇的陣列,其中的第i個元素在排序之後的位置位於[i-k, i+k]之間(k序的).試寫演算法把乙個k序陣列排序,要求最快.

解法,顯然有以下幾個子串行:

x[0], x[k+1], x[2(k+1)], x[3(k+1)]......

x[1],x[k+1+1],x[2(k+1)+1],x[3(k+1)+1]......

........................

x[k],x[k+1+k],x[2(k+1)+k],x[3(k+1)+k]......

這k+1個子序列是已經排序好的,剩下的任務是把其歸併

有兩種方法:

方法一,

普通的merge,與把兩個陣列歸併一樣的思想,則複雜度為o(nk)

方法二

用敗者樹,

則合併乙個元素要logk的時間,合併n個元素要o(nlogk)的時間

解完.

阿里巴巴的一道筆試題

分布式系統中的rpc請求經常出現亂序的情況。寫乙個演算法來將乙個亂序的序列報序輸出,列如,假設起始序號是1,對於 1,2,5,8,10,4,3,6,9,7 這個序列,輸出是 3,4,5 7,8,9,10 上述例子中,3到來的時候發現4,5已經在了,因此將已經滿足順序的整個序列 3,4,5 輸出為一行...

阿里巴巴演算法 資料工程師筆試題選解

1 有三個結點的,可以構成多少個種叉樹?2 一副牌52張 去掉大小王 從中抽取兩張牌,一紅一黑的概率是多少?程式設計題 3 設計乙個最優演算法來查詢一n個元素陣列中的最大值和最小值。已知一種需要比較2n次的方法,請給乙個更優的演算法。情特別注意優化時間複雜度的常數。4 已知三個公升序整數陣列a l ...

關於 阿里巴巴筆試題 投資保險的 建議

author xy1131975903 1 應該將保險類設計為資源共享,即設計乙個同步方法用於控制使用者的投資 推斷是否投資成功 2 應將投資者設計為多執行緒類,即實現runnable介面,能夠競爭投資。3 須要在投資者中體現,競爭投資資源 保險類 的屬性,即能夠設計保險類為其成員變數。這樣就能夠體...