636. 函式的獨佔時間
題目描述
給出一個非搶佔單執行緒CPU的 n 個函式執行日誌,找到函式的獨佔時間。
每個函式都有一個唯一的 Id,從 0 到 n-1,函式可能會遞迴呼叫或者被其他函式呼叫。
日誌是具有以下格式的字串:function_id:start_or_end:timestamp。例如:“0:start:0” 表示函式 0 從 0 時刻開始執行。“0: end :0” 表示函式 0 在 0 時刻結束。
函式的獨佔時間定義是在該方法中花費的時間,呼叫其他函式花費的時間不算該函式的獨佔時間。你需要根據函式的 Id 有序地返回每個函式的獨佔時間。
示例 1:
輸入:
n = 2
logs =
[“0:start:0”,
“1: start :2”,
“1: end :5”,
“0: end :6”]
輸出:[3, 4]
說明:
函式 0 在時刻 0 開始,在執行了 2個時間單位結束於時刻 1。
現在函式 0 呼叫函式 1,函式 1 在時刻 2 開始,執行 4 個時間單位後結束於時刻 5。
函式 0 再次在時刻 6 開始執行,並在時刻 6 結束執行,從而執行了 1 個時間單位。
所以函式 0 總共的執行了 2 +1 =3 個時間單位,函式 1 總共執行了 4 個時間單位。
說明:
- 輸入的日誌會根據時間戳排序,而不是根據日誌Id排序。
- 你的輸出會根據函式Id排序,也就意味著你的輸出陣列中序號為 0 的元素相當於函式 0 的執行時間。
- 兩個函式不會在同時開始或結束。
- 函式允許被遞迴呼叫,直到執行結束。
- 1 <= n <= 100
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/exclusive-time-of-functions
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
思路
class Solution {
public int[] exclusiveTime(int n, List<String> logs) {
int[] res = new int[n];
Stack<Integer> stack = new Stack<>();
int i = 1;
String[] firstLog = logs.get(0).split(":");
int preIndex = Integer.parseInt(firstLog[2]);
stack.push(Integer.parseInt(firstLog[0]));
while(i < logs.size()){
String[] log = logs.get(i).split(":");
if(log[1].equals("start")){
if(!stack.isEmpty())
res[stack.peek()] += Integer.parseInt(log[2]) - preIndex;
stack.push(Integer.parseInt(log[0]));
preIndex = Integer.parseInt(log[2]);
}else{
res[stack.peek()] += Integer.parseInt(log[2]) - preIndex + 1;
stack.pop();
preIndex = Integer.parseInt(log[2]) + 1;
}
i++;
}
return res;
}
}
相關文章
- PHP 時間函式PHP函式
- SPL 的日期時間函式函式
- Golang時間函式及測試函式執行時間案例Golang函式
- T-SQL——函式——時間操作函式SQL函式
- MySQL 的日期和時間函式MySql函式
- Clickhouse 時間日期函式函式
- 時間函式:與時間相關那些事。。。函式
- python之為函式執行設定超時時間(允許函式執行的最大時間)Python函式
- FreeRTOS-04-核心控制函式+時間管理函式函式
- Oracle計算時間函式(對時間的加減numtodsinterval、numtoyminterval)Oracle函式
- 探索MySQL高階語句(數學函式、聚合函式、字串函式、日期時間函式)MySql函式字串
- MySQL 日期函式、時間函式在實際場景中的應用MySql函式
- pandas dataframe 時間欄位 diff 函式函式
- Go基礎-時間和日期函式Go函式
- MySQL日期和時間函式彙總MySql函式
- PostgreSQL:時間——型別、運算子和函式SQL型別函式
- linux下時間有關的函式和結構體Linux函式結構體
- PHP陣列函式的時間複雜度清單PHP陣列函式時間複雜度
- C時間函式strftime、struct timespec 和 struct timeval函式Struct
- 時間函式的簡單理解和應用(time.h)函式
- mysql 時間相關的函式 以及日期和字串互轉MySql函式字串
- 【解惑】時間規劃,Linq的Aggregate函式在計算會議重疊時間中的應用函式
- sleep 時間段不佔指令碼執行時間指令碼
- python效能優化之函式執行時間分析Python優化函式
- GO語言————6.11 計算函式執行時間Go函式
- ORACLE中日期和時間函式彙總(轉載)Oracle函式
- hive時間日期函式及典型場景應用Hive函式
- javascript和PHP及MYSQL時間格式化函式JavaScriptPHPMySql函式
- 3.3.2 函式的預設引數和佔位引數 函式過載函式
- linux系統時間程式設計(6) 日曆時間tm轉字串strftime函式Linux程式設計字串函式
- 關於Android room 時間函式條件的坑 給需要的人AndroidOOM函式
- MySQL中日期和時間戳互相轉換的函式和方法MySql時間戳函式
- 使用jiffies的時間比較函式time_after、time_before函式
- 建構函式之間的呼叫函式
- 延時函式函式
- 何時使用函式表示式與函式宣告函式
- SqlServer 查詢的幾種方式以及數字函式、時間函式的應用總結(迴歸基礎)SQLServer函式
- linux系統時間程式設計(9) 計算程式片段執行時間clock函式Linux程式設計函式