大資料時代來臨,現在好多面試都有大資料題目,下面大家一起來看一道大資料題目吧
題:檔案中產生100000 (十萬)個隨機數字,數字的取值範圍0~32767 , 按如下要求實現,在實現過程中能夠使用的陣列最長為10000 ,個別變數的記憶體忽略。找到重複次數最多的那個數字(如果有多個,選擇任意一 個)
乍一看這個題我們可能這個數字龐大難以下手,這個題我的思路就是建立乙個長度32767的陣列,用陣列下標儲存出現的數字,用陣列中每乙個下標的所對應的元素儲存該數字出現的次數,(大家有沒有發現這個和我們前幾天學的順序表剛好相似)然後利用迴圈遍歷陣列來比較出現次數最多的那乙個,但是題目中給我了限制陣列長度為了10000,我們的32767的長度肯定無法創立,所以面對這種情況我們該怎麼辦呢?他不讓我們建立大陣列我們可以建立四個小陣列,然後比較出四個中的最大就好了,還有乙個問題就是我們應該如何驗證我們所計算出來的資料呢?我們可以就建立乙個大小32767的陣列和那4個小陣列的進行比較,如果我們的結果相同那就證明我們準確,下面我來給大家展示我譜寫的**
#include "stdio.h"
#include "stdio.h"
#include "stdlib.h"
#include "assert.h"
#define num 1000000
typedef struct max
max;
void file(char*path)//建立檔案存放資料
for(int i=0;i0)
for(int i=0;i0)// 將原檔案中的資料雜湊到4個不同的檔案中
else if(tmp%4==1)
else if(tmp%4 == 2)
else
}max arr[4];
arr[0] = part(path1);
arr[1] = part(path2);
arr[2] = part(path3);
arr[3] = part(path4);
int max= 0;//儲存次數最多的資料的下標
for(int i=0;i<4;i++) }
fclose(fr);
fclose(fw1);
fclose(fw2);
fclose(fw3);
fclose(fw4);
return arr[max];
}int main()
大家有沒有覺得其實大資料題也就是紙老虎,就是看起來不好處理,其實也沒那麼困難(當然也有可能是我太聰明。) 一道面試題
一道面試題 射擊運動員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...