深さ優先探索(DFS)-690話題のLeetcode。従業員の重要性(従業員の重要性)
問題解決の深さ優先探索の詳細、クリックしてください
従業員情報を格納したデータ構造を考えると、それはユニークなIDの従業員、および即時部下のIDの重要性が含まれています。
例えば、スタッフが1つのスタッフのリーダーシップ2、2人の従業員従業員のリーダーシップ3です。15、10、5、それぞれの重要性。次に、従業員データの構造である[1、15 [2]、従業員データ構造2は、データ構造[3]、2、10]であり、スタッフは[]、3、5] 3です。下位の従業員のスタッフが3 1ですが、にもかかわらず即時ない部下以来、したがって、従業員1のデータ構造に反映されていないことに注意してください。
現在、同社のすべての従業員情報、および単一の従業員IDを入力し、彼の部下と、すべての重要性の従業員を返します。
例1:
入力:[[1、5、[2、3]、[2、3、[]]、[3、3、[]]]、1つの 出力:11 説明: 従業員1重要度自体は彼、5です2人のすぐに部下2と3、及び2と3は3をしていることの重要性があります。したがって、従業員の全体的な重要性は、5 + 3 + 1 3 = 11です。
注意:
- 従業員は、最大で1つの直接的なリーダーシップを持っていますが、より直接的な部下を持つことができます
- 従業員の数は2000を超えていません。
これは、下位のノードと重畳された重要度の値を検索しています。
/ * //従業員のインフォ クラスEmployee { //これは、各ノードの一意のIDです。 //この従業員の一意のID 公共int型のID。 //この従業員の重要性値 の公共のint型の重要性; //直接の部下のID 公共一覧<整数>部下。 }。 * / クラスソリューション{ 公共 のint getImportance(一覧<従業員>従業員、int型のID){ 従業員 = nullを。 以下のための{:(従業員のe)の 場合(e.id == ID){ 人= E; 破ります; } } リストの <整数> sub_list = person.subordinates。 int型の合計= 0 ; 以下のために(int型 i = 0; i)は(sub_list.sizeを<; iは++ ){ 合計 + = getImportance(従業員、sub_list.get(I))。 } 戻り person.importance + 和。 } }