国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

lc第319場周賽第三題-逐層排序二叉樹所需的最少操作數(shù)目

2022-11-28 21:57 作者:算法雜記  | 我要投稿

給你一個值互不相同的二叉樹的根節(jié)點?root,在一步操作中,你可以選擇同一層上任意兩個節(jié)點,交換這兩個節(jié)點的值。返回每一層按嚴(yán)格遞增順序排序所需的最少操作數(shù)目。節(jié)點的層數(shù)是該節(jié)點和根節(jié)點之間的路徑的邊數(shù)。

示例?1 :

輸入:

root = [1,4,3,7,6,8,5,null,null,null,null,9,null,10]

輸出:3

解釋:
- 交換 4 和 3 。第 2 層變?yōu)?[3,4] 。
- 交換 7 和 5 。第 3 層變?yōu)?[5,6,8,7] 。
- 交換 8 和 7 。第 3 層變?yōu)?[5,6,7,8] 。
共計用了?3 步操作,所以返回 3 。
可以證明?3 是需要的最少操作數(shù)目。
示例?2 :

輸入:root = [1,3,2,7,6,5,4]??輸出:3

解釋:

- 交換 3 和 2 。第 2 層變?yōu)?[2,3] 。
- 交換 7 和 4 。第 3 層變?yōu)?[4,6,5,7] 。
- 交換 6 和 5 。第 3 層變?yōu)?[4,5,6,7] 。
共計用了?3 步操作,所以返回 3 。
可以證明?3 是需要的最少操作數(shù)目。
示例?3 :

輸入:root = [1,2,3,4,5,6]? ?輸出:0

解釋:每一層已經(jīng)按遞增順序排序,所以返回?0 。

提示:

·樹中節(jié)點的數(shù)目在范圍?[1, 105]?。

·1 <= Node.val <= 105

·樹中的所有值互不相同。

分析:

先用bfs層序遍歷存下每一層的所有節(jié)點的值,然后對每一層的最小交換次數(shù)求和,對于一個待排序數(shù)組來說求最小交換次數(shù)使得它有序,可以利用求交換環(huán)獲得。首先利用一個數(shù)組把序列里面的數(shù)的原來位置利用一個數(shù)組來記錄一下,然后給原序列按照升序排序,我們知道了最終的結(jié)果,現(xiàn)在就是要如何從原來的位置,到達(dá)最終的位置的問題。

以樣例來說明:

下標(biāo)?1 2 3 4
排序前?7 6 8 5
排序后?5 6 7 8
觀察得7不在正確的位置上,所以與8交換,序列變?yōu)? 6 7 5,繼續(xù)看8也不在正確的位置上,與5交換得5 6 7 8,至此7,5,8全部訪問過,且三個元素構(gòu)成一個交換環(huán),6作為單點默認(rèn)成環(huán),所以一共兩個交換環(huán),要一個交換環(huán)內(nèi)所有的元素有序只需要交換該環(huán).size()-1次,即所有環(huán)得交換次數(shù)和為數(shù)組的大小-交換環(huán)的個數(shù)次。


lc第319場周賽第三題-逐層排序二叉樹所需的最少操作數(shù)目的評論 (共 條)

分享到微博請遵守國家法律
保山市| 黄浦区| 白河县| 龙口市| 兴业县| 清新县| 北碚区| 彭州市| 湘阴县| 新乡县| 德化县| 呼玛县| 溧水县| 永清县| 融水| 屏东县| 蓝田县| 沐川县| 郧西县| 青州市| 双城市| 沙湾县| 阳江市| 嘉善县| 化隆| 云梦县| 内丘县| 富宁县| 城市| 东阳市| 仁布县| 青冈县| 喜德县| 罗甸县| 搜索| 邢台县| 黄浦区| 油尖旺区| 昭通市| 兴仁县| 廉江市|