leetcode 834. 樹中距離之和(dp)

給定一個無向、連通的樹。樹中有 N 個標記為 0...N-1 的節點以及 N-1 條邊 。第 i 條邊連接節點 edges[i][0] 和 edges[i][1] 。返回一個表示節點 i 與其他所有節點距離之和的列表 ans。示例 1:輸入: N = 6, edges = [[0,1],[0,2],[2,3],[2,4],[2,5]]
輸出: [8,12,6,10,10,10]
解釋: 
如下為給定的樹的示意圖:0/ \
1   2/|\3 4 5我們可以計算出 dist(0,1) + dist(0,2) + dist(0,3) + dist(0,4) + dist(0,5) 
也就是 1 + 1 + 2 + 2 + 2 = 8。 因此,answer[0] = 8,以此類推。
說明: 1 <= N <= 10000

代碼

class Solution {int[] sz,dp,re;Map<Integer,List<Integer>> map3=new HashMap<>();public int[] sumOfDistancesInTree(int N, int[][] edges) {re=new int[N];sz=new int[N];dp=new int[N];for (int i=0;i<N;i++)map3.put(i,new ArrayList<>());for(int[] edge:edges)//鄰接表{map3.get(edge[0]).add(edge[1]);map3.get(edge[1]).add(edge[0]);}getSumOfDistancesInTree(0, -1);getSumOfDistancesInTree2(0, -1);return re;}public void getSumOfDistancesInTree(int  cur, int father) {//從根節點向下統計距離dp[cur]=0;sz[cur]=1;for(int next:map3.get(cur)){if(next==father) continue;getSumOfDistancesInTree(next,cur);dp[cur]+=dp[next]+sz[next];sz[cur]+=sz[next];}}public void getSumOfDistancesInTree2(int  cur, int father) {re[cur]=dp[cur];for(int next:map3.get(cur)){if(next==father) continue;int pn=dp[next],pc=dp[cur],sn=sz[next],sc=sz[cur];dp[cur]-=dp[next]+sz[next];sz[cur]-=sz[next];dp[next]+=dp[cur]+sz[cur];sz[next]+=sz[cur];//將父子節點顛倒,對應的值發生改變getSumOfDistancesInTree2(next,cur);dp[next]=pn;dp[cur]=pc;sz[cur]=sc;sz[next]=sn;//還原父子節點}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392885.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392885.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSS設計指南(讀書筆記 - 背景)

本文轉自william_xu 51CTO博客&#xff0c;原文鏈接&#xff1a;http://blog.51cto.com/williamx/1140006&#xff0c;如需轉載請自行聯系原作者

在計算機網絡中 帶寬是什么,在計算機網絡中,“帶寬”用____表示。

答案查看答案解析:【解析題】計算機的發展經歷了4個時代&#xff0c;各個時代劃分的原則是根據()。【解析題】計算機網絡的最主要的功能是______。【解析題】馮.諾依曼提出的計算機工作原理為____。【解析題】計算機的通用性使其可以求解不同的算術和邏輯問題&#xff0c;這主要…

如何在iOS上運行React Native應用

by Soujanya PS通過Soujanya PS 如何在iOS上運行React Native應用 (How to run a React Native app on iOS) I recently started to develop a React-Native app on iOS. This was my first foray into native app development. I was surprised by the ease and level of abs…

導出excel 后 頁面按鈕失效(頁面假死)

在 page_load 里加上如下代碼&#xff1a;string beforeSubmitJS "\nvar exportRequested false; \n"; beforeSubmitJS "var beforeFormSubmitFunction theForm.onsubmit;\n"; beforeSubmitJS "theForm.onsubmit function(){ \n"; …

Mysql分組查詢group by語句詳解

(1) group by的含義:將查詢結果按照1個或多個字段進行分組&#xff0c;字段值相同的為一組(2) group by可用于單個字段分組&#xff0c;也可用于多個字段分組 select * from employee; --------------------------------------------- | num | d_id | name | age | sex | homea…

leetcode 75. 顏色分類(雙指針)

給定一個包含紅色、白色和藍色&#xff0c;一共 n 個元素的數組&#xff0c;原地對它們進行排序&#xff0c;使得相同顏色的元素相鄰&#xff0c;并按照紅色、白色、藍色順序排列。 此題中&#xff0c;我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 注意: 不能使用代碼…

火車頭如何才能設置發布的時候,如果是有html代碼就直接的轉換掉,互聯網上笑話抽取及排重---火車頭采集器的使用和MD5算法的應用...

10011311341 呂濤、10011311356李紅目的&#xff1a;通過熟悉使用火車頭采集器&#xff0c;在網絡上采取3萬條笑話并進行排重&#xff0c;以此來熟悉web文本挖掘的一些知識。過程&#xff1a;本次學習&#xff0c;主要分成兩個部分。第一部分是笑話文本的采集&#xff0c;第二部…

Tcp_wrapper

在Linux進程分為&#xff1a;獨立進程和非獨立進程非獨立進程&#xff1a;是依賴于超級守護進程的進程&#xff0c; 且受Xinetd 管理&#xff0c;并在啟動服務時 必須啟動例子&#xff1a;#chkconfig –level 2345 telnetd on關與chkconfig 的命令&#xff1a;#chkconfig –lis…

angular 動畫_如何在Angular 6中使用動畫

angular 動畫介紹 (Introduction) Animation is defined as the transition from an initial state to a final state. It is an integral part of any modern web application. Animation not only helps us create a great UI but it also makes the application interesting…

win10上面安裝win7的虛擬機怎么相互ping通

最近干了一些很蛋疼的事&#xff0c;這些都是自己踩過的坑&#xff0c;記錄下來方便自己以后查閱 首先我的目的就是為了在自己的PC機上面部署一個SVN服務器&#xff0c;然后安裝一個客戶端&#xff0c;自己寫的軟件就可以定期入庫&#xff0c;做好自己的版本控制&#xff0c;但…

新東方面試知識點記錄

3.spring mvc 怎么接受http post 方式提交過來的xml數據&#xff1f;servlet中怎么接受&#xff1f; RequestMapping(value"/jsonPrase", headers {"content-typeapplication/json","content-typeapplication/xml"}) ResponseBody …

win10用計算機名訪問文件夾,win10系統提示你當前無權訪問該文件夾的解決方法【圖文教程】...

Win10系統下&#xff0c;我們在訪問或更改某些系統文件夾時&#xff0c;有時會遇到系統提示“你當前無權訪問該文件夾”的情況。那么&#xff0c;遇到這種情況的話&#xff0c;我們該怎么辦呢&#xff1f;接下來&#xff0c;小編就向大家分享win10系統提示“你當前無權訪問該文…

.Net Micro Framework研究—實現SideShow窗體界面

基于MF系統的Windows SideShow界面是非常炫的&#xff08;如下圖&#xff09;。既然微軟能用.Net Micro Framework實現這么棒的界面效果&#xff0c;我想我們也能做到。 &#xff08;SideShow模擬器界面和游戲程序中的右鍵菜單—注意菜單彈出后&#xff0c;其它的界面變暗了&am…

leetcode 344. 反轉字符串

編寫一個函數&#xff0c;其作用是將輸入的字符串反轉過來。輸入字符串以字符數組 char[] 的形式給出。 不要給另外的數組分配額外的空間&#xff0c;你必須原地修改輸入數組、使用 O(1) 的額外空間解決這一問題。 你可以假設數組中的所有字符都是 ASCII 碼表中的可打印字符。…

事件捕獲(capture)和冒泡事件(Bubble)

PS&#xff1a;這里是我從別人的博客中學習事件捕獲和冒泡是的總結&#xff0c;如果你也感興趣的話&#xff0c;建議你點擊鏈接查看原博客的內容&#xff0c;他們寫的都是很經典&#xff01; 對“捕獲”和“冒泡”這兩個概念&#xff0c;我想我們對冒泡更熟悉一些&…

gulp編譯css_如何用gulp縮小CSS

gulp編譯cssby Vinicius Gularte由Vinicius Gularte 如何用gulp縮小CSS (How to minify your CSS with gulp) In this article, Im going to show a simple way to automatically minify your CSS files using gulp. ?在本文中&#xff0c;我將展示一種使用gulp自動縮小CSS文…

線段樹(區間更改,區間查最值)模板

線段樹(區間更改,區間查最值)模板 主要重在理解線段樹,理解了怎么改都可以,還有以后不要直接抄模板,要寫出自己想的一份代碼 &代碼&#xff1a; #include <cstdio> #include <bitset> #include <iostream> #include <set> #include <cmath>…

Unity3D項目開發一點經驗

我們主要使用3dsmax2010進行制作&#xff0c;輸出FBX的類型導入Unity3D中。默認情況下&#xff0c;3dsmax8可以和U3D軟件直接融合&#xff0c;自動轉換為FBX物體。 注意事項如下&#xff1a; 1.面數控制 在MAX軟件中制作單一GameObject物體的面數不能超過65000個三角形&#xf…

leetcode 142. 環形鏈表 II(set/快慢指針)

給定一個鏈表&#xff0c;返回鏈表開始入環的第一個節點。 如果鏈表無環&#xff0c;則返回 null。 為了表示給定鏈表中的環&#xff0c;我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置&#xff08;索引從 0 開始&#xff09;。 如果 pos 是 -1&#xff0c;則在該鏈表中沒有…

html5 支持表格嗎,html5 – 在HTML 5中使用表格很好嗎?

簡單規則 – 使用表格表格數據&#xff0c;使用其他元素進行演示(使用CSS設計布局)&#xff0c;如div&#xff0c;section&#xff0c;aside&#xff0c;nav等。這為他們所持有的內容提供了意義&#xff0c;而不是為所有內容使用表事實是&#xff0c;開發人員在90年代使用了表格…