【程序員】
給你一個數組 A [ 1 .. n ] ,請你在 O ( n ) 的時間裡構造一個新的數組 B [ 1 .. n ] ,使得 B [ i ] = A [ 1 ] * A [ 2 ] * ... * A [ n ]/A [ i ] 。你不能使用除法運算。
(給出了一個數列 A [ 1 .. n ] ,要求在較短的時間內不用除法構造一個新數列 B [ 1 .. n ] ,使得 B [i] = A [ 1 ] * A [ 2 ] * ... * A [ n ]/A [ i ] 。 n是這個數組的長度。而 O ( n ) 是評判計算方法速度的標準。如果一個解答方法在n任意變化的情況下,都能滿足總共的計算次數相當於是 n 乘以一個常數C這個條件,那麼就稱這個解答方法是 O ( n ) 的;如果這個解答方法能滿足總共的計算次數是 n 2 乘以常數C,那麼這個解答方法就被稱作是 O ( n 2 ) 的。)
【程序員】
給你一個長度為 N 的鏈表。N 很大,但你不知道 N 有多大。你的任務是從這 N 個元素中隨機取出 k 個元素。你只能遍歷這個鏈表一次,且必須保證取出的元素是完全隨機的(出現概率均等)。
(意思就是有一大串物品,它們能且僅能逐個經過你眼前一次。你不知道它們的個數,要求你從中隨機地抽取 k 個物品,同時必須保證取出的元素是完全隨機的(出現概率均等)。)