标签:informTime inform int graph needed manager headID TIme
这是一个汇报工作时间长度的题
建立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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。