這題看上去很簡單,正常暴力求解的話思路是這樣的:
寫乙個方法判斷兩顆樹是不是一樣(遞迴);
遍歷一遍把所有節點存到列表裡;
二重迴圈遍歷所有節點兩兩比較;
我一開始就是這麼幹的,超時;
看了官方題解,答案還是寫得很美的。
我們怎麼標識一棵樹?
無論是先序、中序還是後序都無法做到與一棵二叉樹一一對應;
但是擴充套件二叉樹就可以,擴充套件二叉樹就是把每個非滿孩子結點再補上空值標識。
官方題解中將空值用#
標識:
同時維護乙個map用於統計重複出現的樹,以樹的序列化結果作為key。
接下來就是先序遍歷一下整棵樹,更新map即可。
官方題解**寫的很美。
/**
* definition for a binary tree node.
* public class treenode
* treenode(int val)
* treenode(int val, treenode left, treenode right)
* }*/class
solution
private string collect
(treenode node, map
count, list
res)
string serial =
newstringbuilder()
.(node.val).(
',').(
collect
(node.left, count, res)).
(',').
(collect
(node.right, count, res)).
tostring()
; count.
put(serial, count.
getordefault
(serial,0)
+1);
if(count.
get(serial)==2
)return serial;
}}
Leetcode每日隨機2021 2 26
今天這題就比較簡單了,貪心做一下就行。重量分為兩類,大於limit一半的和小於等於limit一半的。就分別叫a類和b類吧,數量分別為a和b。最少需要a個船,然後給a中每乙個成員找一下能一起坐船的b類成員,從a類中最重的開始找,也要找b類中最重的成員。最後給剩下的b類成員兩兩配條船就行了。class ...
LeetCode(三)快慢指標 202
題目描述 編寫乙個演算法來判斷乙個數 n 是不是快樂數。快樂數 定義為 對於乙個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是 無限迴圈 但始終變不到 1。如果 可以變為 1,那麼這個數就是快樂數。如果 n 是快樂數就返回 true 不是,則返回 ...
Leetcode 第 202 場周賽
感覺就是拼手速的比賽,沒什麼意思,再打幾次把排名打到前面就不打了。存在連續三個奇數的陣列 給你乙個整數陣列 arr,請你判斷陣列中是否存在連續三個元素都是奇數的情況 如果存在,請返回 true 否則,返回 false class solution return false 使陣列中所有元素相等的最小...