深さ優先探索(DFS)-690話題のLeetcode。従業員の重要性(従業員の重要性)

深さ優先探索(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. 従業員は、最大で1つの直接的なリーダーシップを持っていますが、より直接的な部下を持つことができます
  2. 従業員の数は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 + 和。
    } 
}

 

おすすめ

転載: www.cnblogs.com/qinyuguan/p/11361411.html
おすすめ