Leetcode每日隨機2021 2 24

2021-10-19 23:58:50 字數 1226 閱讀 6153

這題看上去很簡單,正常暴力求解的話思路是這樣的:

寫乙個方法判斷兩顆樹是不是一樣(遞迴);

遍歷一遍把所有節點存到列表裡;

二重迴圈遍歷所有節點兩兩比較;

我一開始就是這麼幹的,超時;

看了官方題解,答案還是寫得很美的。

我們怎麼標識一棵樹?

無論是先序、中序還是後序都無法做到與一棵二叉樹一一對應;

但是擴充套件二叉樹就可以,擴充套件二叉樹就是把每個非滿孩子結點再補上空值標識。

官方題解中將空值用#標識:

同時維護乙個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 使陣列中所有元素相等的最小...