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