• 模拟函数调用 Simulation Exclusive Time of Functions


    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;
        }
    
  • 相关阅读:
    解决在cmd命令下不能输入中文方法
    报错注入
    html表单中的name属性和value属性
    xss漏洞
    DVWA-xss反射型(跨站脚本漏洞)
    DVWA-brute force
    owsap top 10 2017(十大web安全应用程序安全)
    sqli_labs less-5
    盲注
    c++ 类
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/8967365.html
Copyright © 2020-2023  润新知