69-x的平方根:方法彙總,這篇部落格寫的不錯,其實記住牛頓迭代和二分就行
此處貼上牛頓迭代的遞迴方法和迭代方法,不過個人感覺此處有些不恰當,就是浮點數的比較不宜使用 ==,應該定義乙個精度eps=1e-6,做差比較fabs(絕對值)與eps大小
class
solution
public
double
sqrts
(double x)
else}}
// 迭代:
double x0 =1;
double pre;
while
(true
)}
83-刪除鍊錶的重複元素:常規題目
88-合併陣列 : 從這道題我們可以明白邊插邊排序和所有完成後再一塊排序效率相差很大,即在本題中,複製陣列並不耗費太多的時間,主要是排序費時,所以我們使用雙指標和新的o(m+n)空間。但是當你看了題解方法三之後你會發現竟然連新空間都不用開!!!
這種方法值得學習!!!
// p用於追蹤新增元素的位置
class
solution}/
/leetcode-cn.com/problems/merge-sorted-array/solution/he-bing-liang-ge-you-xu-shu-zu-by-leetcode/
ps : 陣列自動擴容的方法
採用system.arraycopy方法實現,其宣告為:
1.system.arraycopy(object src,int srcpos,object dest,int destpos, int length) ;
2.採用arraylist類陣列,它可以在需要時自動擴容;
100-相同的樹 : 演算法框架如下,記住!
boolean issametree
(treenode root1, treenode root2)
by the way, 下面是bst的判斷合法性演算法,個人感覺這兩種演算法比較清晰
/// 法二:
boolean isvalidbst
(treenode root)
boolean isvalidbst
(treenode root, treenode min, treenode max)
/
101-對稱二叉樹 :
關鍵在於,只要同時滿足下面的條件,兩個樹互為映象:
它們的兩個根結點具有相同的值
每個樹的右子樹都與另乙個樹的左子樹映象對稱
所以,我們可以實現這樣乙個遞迴函式,通過「同步移動」兩個指標的方法來遍歷這棵樹,p 指標和 q 指標一開始都指向這棵樹的根,隨後 p右移時,q 左移,p 左移時,q 右移。每次檢查當前 p 和 q 節點的值是否相等,如果相等再判斷左右子樹是否對稱。
class
solution
public
boolean
check
(treenode p, treenode q)
if(p == null || q == null)
return p.val == q.val &&
check
(p.left, q.right)
&&check
(p.right, q.left);}
}// 更清晰的寫法:
class
solution
//呼叫遞迴函式,比較左節點,右節點
return
dfs(root.left,root.right);}
boolean
dfs(treenode left, treenode right)
if(left==null || right==null)
if(left.val!=right.val)
//再遞迴的比較 左節點的左孩子 和 右節點的右孩子
//以及比較 左節點的右孩子 和 右節點的左孩子
Leetcode騰訊50題精選題解 Nim遊戲
你和你的朋友,兩個人一起玩 nim 遊戲 桌子上有一堆石頭,每次你們輪流拿掉 1 3 塊石頭。拿掉最後一塊石頭的人就是獲勝者。你作為先手。你們是聰明人,每一步都是最優解。編寫乙個函式,來判斷你是否可以在給定石頭數量的情況下贏得遊戲。示例 輸入 4 輸出 false 解釋 如果堆中有 4 塊石頭,那麼...
Leetcode騰訊精選50題題解 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...
Leetcode騰訊50題精選題解 報數問題
111 211211 111221 1 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一 即 1211。給定乙個正整數 n 1 n 30 輸出報數序列的第 n 項。注意 整數順序將表示為乙個字串。示例 1 輸入 ...