2018-04-28 14:10:33

问题描述:

问题求解:

个人觉得这是一条很好的模拟题,题目大意就是给了一个单线程的处理器,在处理器上跑一个函数,但是函数里存在调用关系,可以是调用其他函数,也可以是递归的调用自己,通过logs给出每个函数的开始和结束时间,问每个函数的实际运行时间是多少。logs是按时间戳的顺序给的,并非按照函数名,最后的结果需要按照函数名的大小排序后给。

为什么说这是一条模拟题呢,因为函数的调用关系本质上就是栈中的压栈出栈,使用栈这个数据结构能够很好的模拟函数的调用关系,通过这个题目也能更好的理解在实际运行过程中函数与函数之间的调用关系。

    public int[] exclusiveTime(int n, List<String> logs) {
int[] res = new int[n];
Stack<Integer> s = new Stack<>();
int prev = 0;
for (String log : logs) {
String[] ls = log.split(":");
int idx = Integer.valueOf(ls[0]);
int t = Integer.valueOf(ls[2]);
if (ls[1].equals("start")) {
if (!s.isEmpty()) res[s.peek()] += t - prev;
s.push(idx);
prev = t;
}
else {
if (!s.isEmpty()) res[s.peek()] += t - prev + 1;
s.pop();
prev = t + 1;
}
}
return res;
}

最新文章

  1. linux bash中too many arguments问题的解决方法
  2. Quartz 2.2.x CronTrigger Tutorial
  3. 第八章:Javascript函数
  4. 我常用的delphi 第三方控件
  5. c# 关键字delegate、event(委托与事件)[MSDN原文摘录][2]
  6. mongodb 操作语句与sql操作语句对比
  7. 问题-[Delphi]PixelFormat 图像颜色的数据格式
  8. 导出文本、表格、图像到PDF格式文件中(学习整理)
  9. mvn详解
  10. Unity 绘制多边形
  11. 我用过的Linux命令之chmod
  12. JavaSript模块化 &amp;&amp; AMD CMD 详解.....
  13. Linux高性能server编程——高级I/O函数
  14. tab切换插件开发
  15. jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解 ----转载
  16. 使用Java反射优化多个方法调用
  17. Ubuntu16.04 换阿里源
  18. Linux 内核里的数据结构:双向链表
  19. ipv6导致的域名解析慢,nslookup,lvs,hosts.conf
  20. php -- php缓存技术

热门文章

  1. postgresql----继承表INHERITS PARENT TABLE
  2. Intellij idea的Dependencies波浪线
  3. CMDB三大绝招,助我站稳运维之巅
  4. python基础之员工信息表作业
  5. php获取目录下所有文件路径(递归)
  6. 跟我学Makefile(四)
  7. enum 枚举类型默认值
  8. Hadoop mapreduce自定义分区HashPartitioner
  9. ASP.NET 无法生成临时类(result=1)图解
  10. Yahoo Programming Contest 2019