刷題筆記 2020 06 09

2021-10-06 23:13:49 字數 1202 閱讀 9182

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

分析:遞迴判斷。也可以用佇列實現,開始遍歷樹的第 n 層時,佇列中應該只有第 n 層各結點的指標,依次取出這些結點,再把他們的子節點放進去,直到隊列為空(也就是第 m 層沒有乙個結點有子節點)。

class

solution

};

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

class

solution

bool

isbalanced_solution

(treenode* proot)

};

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。

分析:由於同樣的數字相異或為 0,所以將陣列中的所有數字做異或,得到的結果 ret 就是兩個只出現一次的數字的異或,而且 ret 一定不為 0。假設 ret 二進位制表示中第 i 位不為 0,則根據數字的第 i 位是 0 還是 1 將所有數字分為兩類,再將兩類數字做異或,得到的結果就是只出現過一次的數字了。

class

solution

int ret =0;

for(i=

0; i++i)

ret ^

= data[i]

;int digit1 =0;

while

((ret&1)

==0)*num1=0,

*num2=0;

for(i=

0; i++i)}}

;

小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和為s的連續正數序列? good luck!

分析:滑動視窗法。

class

solution

while

(ret>sum && lp<=sum/2)

if(ret==sum && lp<=sum/2)

}return res;}}

;

每天一刷20200609

問題 輸入描述 首先輸入數字n,表示要輸入多少個字串。連續輸入字串 輸出次數為n,字串長度小於100 輸出描述 按長度為8拆分每個字串後輸出到新的字串陣列,長度不是8整數倍的字串請在後面補數字0,空字串不處理。思路 用string 的方法來解決這個函式。include include include...

刷題筆記 Binary watch

include include include using namespace std class solution m count push back i for int i 0 i num i vector a n,n 5 將陣列n的前5個元素作為向量a的初值 vector a n 1 n 4 ...

2018 4 11刷題筆記

classa newa newa newa echo a num 答案是3 因為static變數常駐記憶體 server 是乙個包含了諸如頭資訊 header 路徑 path 以及指令碼位置 script locations 等等資訊的陣列。這個陣列中的專案由 web 伺服器建立。不能保證每個伺服器...