力扣636.函数的独占时间

力扣636.函数的独占时间

  • 用一个对组栈存每个start数据,first为编号,second为开始时间

    • start时:若栈为空 直接入栈
      • 若不为空 处理前一段已独占的时间
    • end时:将自己的独占时间处理了
      • 若栈非空 将栈顶元素的开始时间更新为当前时间+1
      • 因为前面所有时间都已处理过 不用管了
  •   class Solution {
      public:
          vector<int> exclusiveTime(int n, vector<string>& logs) {
              vector<int> ans(n,0);
              stack<pair<int,int>> st;
              for(auto t:logs)
              {
                  int num=0;
                  int idx=0;
                  while(t[idx] != ':')
                  {
                      num = num * 10 + t[idx] - '0';
                      idx ++;
                  }
                  idx ++;
                  if(t[idx] == 's')
                  {
                      idx += 6;
                      int ti = 0;
                      while(idx < t.size())
                      {
                          ti = ti * 10 + t[idx] - '0';
                          idx ++;
                      }
                      if(st.empty()) st.push({num,ti});
                      else
                      {
                          ans[st.top().first] += ti - st.top().second;
                          st.push({num,ti});
                      }
                  }
                  else
                  {
                      idx += 4;
                      int ti = 0;
                      while(idx < t.size())
                      {
                          ti = ti * 10 + t[idx] - '0';
                          idx ++;
                      }
      
                      ans[st.top().first] += ti - st.top().second + 1;
                      st.pop();
                      if(!st.empty()) st.top().second = ti + 1;
                  }
              }
              return ans;
          }
      };
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光男孩01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值