其他分享
首页 > 其他分享> > 1376 TIme needed to inform all employees

1376 TIme needed to inform all employees

作者:互联网

这是一个汇报工作时间长度的题

建立MAP,   因为存在层级关系,因此内部为ARRAYLIST,

 

DFS, 

Integer,遍历整体层级数,分情况,如果为-1, 不执行;如果不包括manager i, 建立新ARRAYLIST,表中增加新节点,并把它放在图中。否则,GRAPH包括manger i,增加节点i ,放到图中。 

 

计算图中时间,返回所需时间。

 

在借助DFS函数时, t=t+informtime[headID]

 

 

class Solution {     int time_needed=0;         public int numOfMinutes(int n, int headID, int[] manager, int[] informTime) {         Map<Integer,ArrayList<Integer>>graph= new HashMap<>();         for(int i=0;i<n;i++){             if(manager[i]==-1)continue;             if(!graph.containsKey(manager[i])){                 ArrayList<Integer>list= new ArrayList<>();                 list.add(i);                 graph.put(manager[i],list);                             }             else{                 ArrayList<Integer> list=graph.get(manager[i]);                 list.add(i);                 graph.put(manager[i],list);             }         }         calculateTime(headID,graph,informTime,0);         return time_needed;     }     private void calculateTime(int headID,Map<Integer,ArrayList<Integer>>graph,int[] informTime,int t){         if(informTime[headID]==0){return;}         t=t+informTime[headID];         ArrayList<Integer>temp=graph.get(headID);         int s=temp.size();         for(int i=0;i<s;i++){             calculateTime(temp.get(i),graph,informTime,t);             if(t>time_needed){ time_needed=t;}         }     } }    

标签:informTime,inform,int,graph,needed,manager,headID,TIme
来源: https://www.cnblogs.com/LLflag1/p/16492588.html