情境模擬: 資料夾深度 Crawler Log Folder_Leetcode #1598

更新於 2024/07/10閱讀時間約 3 分鐘

題目敘述 Crawler Log Folder

題目給定一串目錄進出的操作指令,請問所有指令完成後,回到根目錄需要幾個步驟?

../ 代表回到上一層目錄
./ 代表留在目前的目錄
x/ 代表前往名稱為x的子目錄

測試範例

Example 1:

raw-image


Input: logs = ["d1/","d2/","../","d21/","./"]
Output: 2
Explanation: Use this change folder operation "../" 2 times and go back to the main folder.


Example 2:

raw-image


Input: logs = ["d1/","d2/","./","d3/","../","d31/"]
Output: 3


Example 3:

Input: logs = ["d1/","../","../","../"]
Output: 0

約束條件

Constraints:

  • 1 <= logs.length <= 10^3

指令的數量介於1~1000個

  • 2 <= logs[i].length <= 10

每個指令的長度介於2~10之間

  • logs[i] contains lowercase English letters, digits, '.', and '/'.

指令只會有小寫英文字母、數字、.、斜線

  • logs[i] follows the format described in the statement.

指令都符合題目敘述的指令格式

  • Folder names consist of lowercase English letters and digits.

資料夾名稱只會有小寫英文字母和數字


演算法 模擬法

直接根據每一條指令進行模擬

如果遇到../就回到上一層的目錄,深度-1。

如果遇到./就留在目前目錄,深度不改變。

如果遇到x/就進入到下一層名子為x的子目錄,深度+1。


最後,模擬結束時,深度就是回到根目錄所需要的操作次數。


程式碼 模擬法

class Solution:
def minOperations(self, logs: List[str]) -> int:

level = 0

for command in logs:

if command == "../":

# go backward, up to root(0) at most
level = max(level-1, 0)
elif command != "./":

# go forward
level += 1

return level

複雜度分析

時間複雜度: O(n)

線性掃描每個指令,所需時間為O(n)。

空間複查度: O(1)

所用到的都是固定尺寸的臨時變數,為常數級別O(1)。


Reference

[1] Crawler Log Folder - LeetCode

avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述 Merge Nodes in Between Zeros 給定一個鏈結串列,合併非零區間的節點(以加總的方式合併),輸出合併後的鏈結串列。
題目敘述 Intersection of Two Arrays II 給定兩個輸入陣列,請找出兩個陣列交集的元素,並且依照出現次數輸出。 測試範例 Example 1: Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2,2] 交集元素
題目敘述 All Ancestors of a Node in a Directed Acyclic Graph 給定一個有向無環圖,請找出每個點的祖先,以陣列的形式返回答案。
題目敘述 Most Profit Assigning Work 公司裡有n位員工,m件任務。 每位員工的能力記錄在worker陣列。 每個任務對應的能力要求和獲利紀錄在difficulty 和profit陣列。 不同的員工可以做同樣的任務。 請問怎麼分配任務可以得到整體最大獲利?
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
題目敘述 IPO 新企業準備上市增資,初始資本是w,可以參加k個專案。 每個專案的獲利和投入成本分別記錄在profits和capital陣列。 請問,在盡可能增資的情況下,最後最大的總資本是多少?
題目敘述 Merge Nodes in Between Zeros 給定一個鏈結串列,合併非零區間的節點(以加總的方式合併),輸出合併後的鏈結串列。
題目敘述 Intersection of Two Arrays II 給定兩個輸入陣列,請找出兩個陣列交集的元素,並且依照出現次數輸出。 測試範例 Example 1: Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2,2] 交集元素
題目敘述 All Ancestors of a Node in a Directed Acyclic Graph 給定一個有向無環圖,請找出每個點的祖先,以陣列的形式返回答案。
題目敘述 Most Profit Assigning Work 公司裡有n位員工,m件任務。 每位員工的能力記錄在worker陣列。 每個任務對應的能力要求和獲利紀錄在difficulty 和profit陣列。 不同的員工可以做同樣的任務。 請問怎麼分配任務可以得到整體最大獲利?
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
題目敘述 IPO 新企業準備上市增資,初始資本是w,可以參加k個專案。 每個專案的獲利和投入成本分別記錄在profits和capital陣列。 請問,在盡可能增資的情況下,最後最大的總資本是多少?
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
敘述者: 那天,你像往常一樣走在街上,一邊思考著自己的創業夢。突然,你的目光被一個貼著招租廣告的店面吸引住了。 你: 哇,這個店面看起來不錯,不知道會不會太貴? 陌生人 (房東): 你好,你對這個店面感興趣嗎? 你: 嗯,是的,但我在考慮價格問題。剛開始創業,資金有限。 房東: 我可以理解。
Thumbnail
閒聊 相較於前面2篇,鴻海&日月光,是在除權息後,出現大幅度回檔,進行抄底反彈。 20230705操作隨筆-與鴻海的恩怨情仇|方格子 vocus 20230705操作隨筆-與鴻海的恩怨情仇|方格子 vocus 這次是在車上,搭著除權息行情,進行一波操作,2波價差都有吃到,一起存股鞋子的網友,
Thumbnail
AI室內設計工具,大致上可以提供四大產業面向的功能:1.對零售實體店家而言,可以展現店家形象;2.電子商務方面給予模擬產品於各種空間內展示的功能,省去實品於攝影棚拍攝的步驟及成本;3.對於房產或房東來說,更便於優化房屋或建築物等內飾及外觀的塑造;4.室內設計師、建築師、景觀師、佈置師等專家⋯⋯
對自閉症者而言,根本無法連串「上課要坐好=我要坐好」的相關性。 這情況,該怎麼辦? 安坐訓練務必進行 這在入幼稚園前,就要進行了。 剛開始,就要以角落為主,讓自閉症者使初步認知。 在自閉症者經由小活動的進行,感到好玩而有動機,就開始走出小世界。 在進行撤掉桌椅時,以漸進式為主 基本上,
Thumbnail
好消息是你又多了一條充滿紅利的虛擬溝通渠道,壞消息是沒有人能告訴你如何準確預估這裡的 ROAS 或合理化你的 ROI。It’s time to show your entrepreneurship! 在進入正題之前想 Murmur 一下當代資深行銷從業人員的苦痛與憂傷… 這個主題的文章會帶到:
小李剛從口譯訓練班畢業,他所合作的翻譯社告訴他有一個急的口譯case,小李二話不說就答應了,因為他實在想把握住每一個鍛鍊的機會。 不過翻譯社才把小李的履歷提交給客戶就被打了回票,因為小李沒有任何實戰的戰績,因此,機會就飛走了。 小李受此打擊,但不氣餒,為了累積經驗,他不久答應了一個朋友的請託,做了一
Thumbnail
前兩篇講了許多,但我人微言輕,憑藉什麼讓人買單?網路上不也很多人做過討論了,這裡所說的又有什麼不一樣?以下,我們就來用數字說話,基於不同程度的簡化與假設,逐步做說明。開始之前先說一句:無誠勿試。
Thumbnail
        酸痛之道博大精深,每天這樣治療,總感到還有不足之處。趁著居家辦公的機會,在休息時間時,一秒就可以來作伸展運動。一樣平躺後,把癢癢球放到背部,利用身體的重量來壓迫背部的肌肉,直接刺激酸痛點就是直球對決!         只要注意不要用力過猛,以免治療酸痛不成,反倒是造成
Thumbnail
回首歷史,你我都會認同,我們都不會是納粹的一員,不會成為盧安達大屠殺的加害者吧? 本文以試圖瞭解暴力、酷刑拷打或大屠殺的角度,讓讀者得知「去個人化」與「去人性化」如何嚴重影響我們對待他人的方式。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
敘述者: 那天,你像往常一樣走在街上,一邊思考著自己的創業夢。突然,你的目光被一個貼著招租廣告的店面吸引住了。 你: 哇,這個店面看起來不錯,不知道會不會太貴? 陌生人 (房東): 你好,你對這個店面感興趣嗎? 你: 嗯,是的,但我在考慮價格問題。剛開始創業,資金有限。 房東: 我可以理解。
Thumbnail
閒聊 相較於前面2篇,鴻海&日月光,是在除權息後,出現大幅度回檔,進行抄底反彈。 20230705操作隨筆-與鴻海的恩怨情仇|方格子 vocus 20230705操作隨筆-與鴻海的恩怨情仇|方格子 vocus 這次是在車上,搭著除權息行情,進行一波操作,2波價差都有吃到,一起存股鞋子的網友,
Thumbnail
AI室內設計工具,大致上可以提供四大產業面向的功能:1.對零售實體店家而言,可以展現店家形象;2.電子商務方面給予模擬產品於各種空間內展示的功能,省去實品於攝影棚拍攝的步驟及成本;3.對於房產或房東來說,更便於優化房屋或建築物等內飾及外觀的塑造;4.室內設計師、建築師、景觀師、佈置師等專家⋯⋯
對自閉症者而言,根本無法連串「上課要坐好=我要坐好」的相關性。 這情況,該怎麼辦? 安坐訓練務必進行 這在入幼稚園前,就要進行了。 剛開始,就要以角落為主,讓自閉症者使初步認知。 在自閉症者經由小活動的進行,感到好玩而有動機,就開始走出小世界。 在進行撤掉桌椅時,以漸進式為主 基本上,
Thumbnail
好消息是你又多了一條充滿紅利的虛擬溝通渠道,壞消息是沒有人能告訴你如何準確預估這裡的 ROAS 或合理化你的 ROI。It’s time to show your entrepreneurship! 在進入正題之前想 Murmur 一下當代資深行銷從業人員的苦痛與憂傷… 這個主題的文章會帶到:
小李剛從口譯訓練班畢業,他所合作的翻譯社告訴他有一個急的口譯case,小李二話不說就答應了,因為他實在想把握住每一個鍛鍊的機會。 不過翻譯社才把小李的履歷提交給客戶就被打了回票,因為小李沒有任何實戰的戰績,因此,機會就飛走了。 小李受此打擊,但不氣餒,為了累積經驗,他不久答應了一個朋友的請託,做了一
Thumbnail
前兩篇講了許多,但我人微言輕,憑藉什麼讓人買單?網路上不也很多人做過討論了,這裡所說的又有什麼不一樣?以下,我們就來用數字說話,基於不同程度的簡化與假設,逐步做說明。開始之前先說一句:無誠勿試。
Thumbnail
        酸痛之道博大精深,每天這樣治療,總感到還有不足之處。趁著居家辦公的機會,在休息時間時,一秒就可以來作伸展運動。一樣平躺後,把癢癢球放到背部,利用身體的重量來壓迫背部的肌肉,直接刺激酸痛點就是直球對決!         只要注意不要用力過猛,以免治療酸痛不成,反倒是造成
Thumbnail
回首歷史,你我都會認同,我們都不會是納粹的一員,不會成為盧安達大屠殺的加害者吧? 本文以試圖瞭解暴力、酷刑拷打或大屠殺的角度,讓讀者得知「去個人化」與「去人性化」如何嚴重影響我們對待他人的方式。