問題:有101個數,為[1,100]之間的數,其中乙個數是重複的,如何尋找這個重複的數,其時間複雜度和空間複雜度是多少?
解:假設這101個數存放在data[101]的陣列中
一》 採用hash的方法,該方法可以申請乙個100個位元組,然後掃瞄這個101個資料,該方法需要的空間為o(n),時間複雜度為o(n)
char buff[101];
memset(buff, 0 , sizeof(buff));
for (int i = 0; i < 101; ++i)
buff[data[i]]++;
int ires;
for (ires = 1; ires <= 100 && buff[ires] != 2; ++ires);
cout << ires <
三》 空間最優化演算法, 空間複雜度為o(1)
int inum = 0;
for (int i = 0; i < 101; ++i) inum += data[i];
int ires = inum - (100 + 1)*(100/2);
百度筆試題目
1 此題10分 對任意輸入的正整數n,編寫c程式求n 的尾部連續0的個數,並指出計算複雜度。如 18!6402373705728000,尾部連續0的個數是3。不用考慮數值超出計算機整數界限的問題 答 此題可以轉化成尋找能夠被5整除和被10整除的數,然後統計該數中末尾0的個數和能被5整除的次數。inc...
百度筆試題目
假定有20個有序陣列,每個陣列有500個數字,數字型別32位uint數值,現在需要取出這10000個數字中最大的500個,怎麼做?思路 20個有序陣列,不妨設數序為降序。首先把20個陣列中最大的 也就是a i 0 進行大堆排序,輸出堆頂元素 最大 在輸出的那個元素之前所在的陣列中,取下乙個元素,放到...
百度筆試題目及答案
請簡要描述一下hadoop,spark,mpi三種計算框架的特點以及分別適用於什麼樣的場景 a hadoop 基於分布式檔案系統hdfs的分布式批處理計算框架。適用於資料量大,spmd 單程式多資料 的應用。b spark 基於記憶體計算的平行計算框架。適用於需要迭代多輪計算的應用。c mpi 基於...