一道簡單的面試題

2022-04-03 18:15:55 字數 907 閱讀 6158

設初始區間為seq0 [0.0,1,0],產生乙個隨機數插入原來區間形成新區間seq1(假設產生0.7,則seq1=[0.0,0.7,1.0])。對seq1中的區間的子相鄰區間(如[0.0,0.7]和[0.7,1.0])取最大值,再次在此區間產生隨機數並插入...如此不斷重複。

演算法很簡單,維護乙個鍊錶即可。每產生乙個數所需的時間複雜度o(n),直接上**(有優化餘地):

#include #include 

typedef

struct

tagnode node,*pnode;

float

generate(pnode entry)

}while(cur&&cur->next);

//generate a data from (max_lb,max_ub)

return max_lb+max*(rand()%1000)/1000.0;}

bool

insertnode(pnode entry,pnode toinsert)

prev=cur;

cur=cur->next;

}return

false

;

}void

dumplist(pnode p)

printf("\n

");}void

destroylist(pnode p)

while

(p);

}void

prob()

destroylist(head);

}void main()

上面的演算法是插入乙個數的時間複雜度為o(n),n個數的插入總的複雜度就是o(n^2)。問題來了,如果演算法的要求是插入n個數要求總的插入時間複雜度最少呢?不知道有什麼好方法,求不吝賜教。

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...

一道面試題

如果n為偶數,則將它除以2,如果n為奇數,則將它加1或者減1。問對於乙個給定的n,怎樣才能用最少的步驟將它變到1。例如 n 61 n 60 n 2 30 n 2 15 n 16 n 2 8 n 2 4 n 2 2 n 2 1 public class myclass public static vo...