Sponsored
Sponsored
This approach involves maintaining a counter to keep track of the current folder depth. For each log operation, adjust the counter accordingly:
After processing all the logs, the counter will give the minimum operations needed to return to the main folder, as it represents the current depth.
Time Complexity: O(n), where n is the number of logs.
Space Complexity: O(1), no additional space is required except for the depth counter.
1function minOperations(logs) {
2 let depth = 0;
3 for (const log of logs) {
4 if (log === "../") {
5 if (depth > 0) depth--;
6 } else if (log !== "./") {
7 depth++;
8 }
9 }
10 return depth;
11}
12
13const logs = ["d1/", "d2/", "../", "d21/", "./"];
14console.log(minOperations(logs));
The JavaScript function iterates through the list of logs, modifying a depth count to track directory levels, ensuring no illegal root directory exits.
This approach simulates navigating through folders using a stack. The stack keeps track of folder paths:
The stack's size at the end represents the current depth, which is the number of operations needed to return to the main folder.
Time Complexity: O(n).
Space Complexity: O(1).
1
The C solution mimics the behavior of a stack using an integer counter to track how many directories down the user is. It simulates pushing and popping with integer operations.