有序資源分配法,就是大家申請資源時都按照相同的順序來;
使用銀行家演算法,程序首次申請資源時測試該程序對資源的最大需求量,若系統現有資源可以滿足,則按照當前申請量分配,否則推遲分配。當程序在執行中繼續申請資源時,先測試該程序,本次申請的資源數是否超過該資源所剩總量,滿足則分配,否則推遲分配。
斐波列函式:
int
fibo
(int n)
陣列法:
根據n來new乙個n大小的陣列,知道陣列第乙個數為1,第二個數也為1,再根據迴圈求後面的數。
演算法:先將整個句子反轉,再對每個單詞反轉
異或:^ 值相同為0,不同為1.
#include
#include
using namespace std;
void
inversestring
(char
* p,
char
* q)
}int
main()
p++;}
printf
(「%s\n」, str)
;return0;
}
直接捕捉的值,捕捉用的成員函式是catch。
返回型別是size_type,沒找到返回值是string::npos。
at()返回元素資料,如果越界,跑出out_of_range,返回容器中指定位置的乙個引用。
const成員函式不允許修改類的資料成員,只有被宣告為const的成員函式才能被乙個const類物件呼叫。
bool checkdbleq
(double dval)
給定乙個字串的集合,格式如:,,,,要求將其中交集不為空的集合合併,要求合併完成後的集合之間無交集,例如上例應輸出,,。
(1)請描述你解決這個問題的思路;
(2)請給出主要的處理流程,演算法,以及演算法的複雜度
(3)請描述可能的改進。
回答:集合使用hash_set來表示,這樣合併時間複雜度比較低。
1)給每個集合編號為0,1,2,3…
2)建立乙個hash_map,key為字串,value為乙個鍊錶,鍊錶節點為字串所在集合的編號。遍歷所有的集合,將字串和對應的集合編號插入到hash_map中去。
3)建立乙個長度等於集合個數的int陣列,表示集合間的合併關係。例如,下標為5的元素值為3,表示將下標為5的集合合併到下標為3的集合中去。開始時將所有值都初始化為-1,表示集合間沒有互相合併。在集合合併的過程中,我們將所有的字串都合併到編號較小的集合中去。
遍歷第二步中生成的hash_map,對於每個value中的鍊錶,首先找到最小的集合編號(有些集合已經被合併過,需要順著合併關係陣列找到合併後的集合編號),然後將鍊錶中所有編號的集合都合併到編號最小的集合中(通過更改合併關係陣列)。
4)現在合併關係陣列中值為-1的集合即為最終的集合,它的元素**於所有直接或間接指向它的集合。
演算法的複雜度為o(n),其中n為所有集合中的元素個數。
題目中的例子:
0:1:
2:3:
4:生成的hash_map,和處理完每個值後的合併關係陣列分別為
aaa:0。[-1,-1,-1,-1,-1]
bbb:0,1。[-1,0,-1,-1,-1]
ccc:0。[-1,0,-1,-1,-1]
ddd:1,4。[-1,0,-1,-1,0]
eee:2。[-1,0,-1,-1,0]
fff:2。[-1,0,-1,-1,0]
ggg:3。[-1,0,-1,-1,0]
hhh:4。[-1,0,-1,-1,0]
所以合併完後有三個集合,第0,1,4個集合合併到了一起,
給40億個不重複的unsigned int的整數,沒排過序的,然後再給幾個數,如何快速判斷這幾個數是否在那40億個數當中?
答案:unsigned int的取值範圍是0到232-1。我們可以申請連續的232/8=512m的記憶體,用每乙個bit對應乙個unsigned int數字。首先將512m記憶體都初始化為0,然後每處理乙個數字就將其對應的bit設定為1。當需要查詢時,直接找到對應bit,看其值是0還是1即可。
怎麼將對應的bit設為1?
也許通過結構體裡面設定占用bit位為1,然後以該結構體去申請512m的空間,這樣就相當於對陣列操作了。
解法二:
將要判斷的幾個數放到乙個hash中,然後遍歷40億個數,看是否有數包含在陣列裡面,若有則將該數刪掉並記錄下來。
這樣占用記憶體就很小,但是如果要判斷的數有變化,那麼就要重新做hash,重新遍歷40億個數了。
思路:通過bit位來解決問題。
hadoop面試題整理 五
一.問答題 1.hive如何調優?2.hive如何許可權控制?3.hbase寫資料的原理是什麼?4.hive能像關聯式資料庫那樣,建多個庫嗎?5.hbase宕機如何處理?6.hive實現統計的查詢語句是什麼?7.生產環境中為什麼建議使用外部表?8.hadoop mapreduce建立類datawri...
面試題目整理(MySQL系列 索引)
最近又開始面試了,整理一些面試的高頻考點吧。有幸參與一次社招面試,看的還是底層知識 1 資料庫儲存引擎分類 1 儲存引擎主要有 1.myisam 不支援事務 2.innodb 支援事務 行級鎖定和外來鍵 3.memory,4.archive,5.federated 預設為 innodb 引擎。inn...
面試題整理
2014.3.19日整理 1.建立一張表hack 裡面就乙個欄位num,然後用sql語句從1開始插入到100,怎麼寫?oracle 答 1.create tablehack num number 建表語句 2.begin for i in1.100loop insert intohack num v...