聽說是一道面試題

2021-10-04 02:32:01 字數 737 閱讀 6062

給定乙個正整數陣列a

=\mathbf=\

a=,其長度為n

nn,陣列裡任意乙個元素滿足1⩽a

i⩽

n1\leqslant a_i\leqslant n

1⩽ai​⩽

n。假設t

it_i

ti​代表i

ii在a

\mathbf

a**現的次數,求出t

=\mathbf=\

t=。時間複雜度要求o(n

)\mathcal(n)

o(n)

,空間複雜度要求o(1

)\mathcal(1)

o(1)

。思路**於二進位制轉換。構造和式s=∑

i=1n

ti⋅(

n+1)

i−

1s=\sum_^n t_i\cdot (n+1)^

s=∑i=1

n​ti

​⋅(n

+1)i

−1:

int sum =0;

for(

int i =

1; i <= n;

++i)

for(

int i =

1; i <= n;

++i)

處理後a就是陣列t

\mathbf

t。但這種做法看起來就容易溢位,有沒有更好的辦法呢?

一道面試題

一道面試題 射擊運動員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...