Java C++题解leetcode1598文件夹操作日志搜集器

目录
  • 题目要求
  • 思路:模拟
    • Java
    • C++
    • Rust
  • 总结

题目要求

思路:模拟

  • 根据日志判断目前在哪一级子文件夹即可,级数就等于返回时的步数,主文件夹级数初始为000:

    • xl:级数+1+1+1;
    • ./:级数不变;
    • ../:级数−1-1−1。

Java

class Solution {
    public int minOperations(String[] logs) {
        int res = 0;
        for (String l : logs) {
            if (l.equals("../")) // 返回父级
                res = Math.max(0, res - 1);
            else if (!l.equals("./")) // 向下进入
                res++;
        }
        return res;
    }
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

C++

class Solution {
public:
    int minOperations(vector<string>& logs) {
        int res = 0;
        for (auto & l : logs) {
            if (l == "../") // 返回父级
                res = max(0, res - 1);
            else if (l != "./") // 向下进入
                res++;
        }
        return res;
    }
};
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

Rust

impl Solution {
    pub fn min_operations(logs: Vec<String>) -> i32 {
        logs.into_iter().fold(0, |mut res, l| {
            if l == "../" { // 返回父级
                if res > 0 {
                    res -= 1;
                }
            }
            else if l != "./" { // 向下进入
                res += 1;
            }
            res
        })
    }
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

总结

超级简单模拟题【水了一篇】,不要考虑怎么回去,直接看怎么去的计算就可以了【又是逆向思维……】。

以上就是Java C++题解leetcode1598文件夹操作日志搜集器的详细内容,更多关于Java C++ 文件夹操作日志搜集器的资料请关注我们其它相关文章!

(0)

相关推荐

  • Java C++题解leetcode消失的两个数字实例

    目录 题目要求 思路:数学推导 Java C++ Rust 总结 题目要求 思路:数学推导 不重复的数组序列可以根据高斯公式计算所有元素的总和: 用当前数组长度加上两个缺失的数字可以得到所有数字长度,即可应用公式. 减去当前数组和即可得到缺失数字和sumsumsum: 两个缺失的数字分别位于m=sum2m=\frac{sum}{2}m=2sum两边: 遍历当前数组中所有小于(或大于)mmm的值,找到缺失的一个: 同样利用两个“和”的差值得到: 利用sumsumsum即可得到另一个. Java c

  • Java C++题解leetcode判定是否为字符重排

    目录 题目要求 思路一:排序 Java C++ Rust 思路二:词频统计 Java C++ Rust 总结 题目要求 思路一:排序 Java class Solution { public boolean CheckPermutation(String s1, String s2) { if(s1.length() != s2.length()) return false; char[] sort1 = s1.toCharArray(); Arrays.sort(sort1); char[]

  • Java C++ 题解leetcode1619删除某些元素后数组均值

    目录 题目要求 思路:模拟 Java C++ Rust 题目要求 思路:模拟 根据题意模拟即可: 排序然后只取中间符合条件的数加和然后计算均值: 根据给出的数组长度n为20的倍数,5%可直接取n/20: 两边各去除5%,则剩余长度为0.9n. Java class Solution { public double trimMean(int[] arr) { Arrays.sort(arr); int n = arr.length, tot = 0; for (int i = n / 20; i

  • Java C++题解 leetcode第k个数实例

    目录 题目要求 思路一:小根堆 Java C++ 思路二:多路归并[多指针] Java C++ Rust 总结 题目要求 思路一:小根堆 中文题目描述不太清晰,但其实由题目可以发现,当x满足条件时,3x.5x.7x分别也都满足条件. 将满足条件的数依次放入优先队列存放用于后续计算,由于每次要取待计算队列中最小的数x,所以定义小根堆: 弹出x,计算3x.5x.7x并入队: 用一个哈希表记录防止重复入队. 每次取数(pop)时进行计数,到第k次结束,当前队首即为答案. Java <学到了> 1L也

  • Java C++题解leetcode672灯泡开关示例

    目录 题目要求 思路:找规律 Java C++ Rust 总结 题目要求 思路:找规律 找到尽可能最精简的通项表达,今日参考:京城打工人 首先,归纳每个开关会影响的灯,其中(k=0,1,2,…): 开关 反转灯编号 一 k 二 2k 三 2k+1 四 3k+1 可见灯以6盏为周期具有相同变化,所以以下只需要推导第一个周期里的6盏灯即可. 观察前6盏灯: 灯 开关 1 一.三.四 2 一.二 3 一.三 4 一.二.四 5 一.三 6 一.二 发现灯2.6和3.5分别受同样的开关影响,所以状态相同

  • Java C++题解leetcode字符串轮转KMP算法详解

    目录 题目要求 思路一:双指针(模拟) Java C++ 思路二:子串 手写KMP Java dp C++ dp 调API Java C++ 总结 题目要求 思路一:双指针(模拟) Java class Solution { public boolean isFlipedString(String s1, String s2) { if (s1.length() != s2.length()) return false; int n = s1.length(); if (n == 0) retu

  • Java C++题解leetcode1598文件夹操作日志搜集器

    目录 题目要求 思路:模拟 Java C++ Rust 总结 题目要求 思路:模拟 根据日志判断目前在哪一级子文件夹即可,级数就等于返回时的步数,主文件夹级数初始为000: xl:级数+1+1+1: ./:级数不变: ../:级数−1-1−1. Java class Solution { public int minOperations(String[] logs) { int res = 0; for (String l : logs) { if (l.equals("../"))

  • Java读取其下所有文件夹与文件路径的方法

    Java读取其下所有文件夹与文件的路径,具体内容如下 如果在f:\aa文件夹中,有如下图的文件夹与文件: 那么,在Java中,则如此读取f:/aa下的所有文件路径: 1.首先由于用到了文件与容器类下的ArrayList,所以在开头要引入如下包: import java.io.*; import java.util.*; 2.方法如下,其中File dirFile除了盘符,比如f:,以外,能够接受一切合法的路径.由于盘符下含有一些系统文件,拒绝访问,因为读取盘符,可能会出现空指针异常. //这里是

  • java实现系统多级文件夹复制

    本文实例为大家分享了java实现系统多级文件夹复制的具体代码,供大家参考,具体内容如下 package com.jae; import java.io.*; //复制文件夹内的内容,包含多级文件夹 public class Test2 { public static void main(String[] args) throws Exception { //原文件夹地址 File resPath = new File("E:\\Java\\分享"); File destPath = n

  • SpringBoot整合redis中的JSON序列化文件夹操作小结

    目录 前言 快速配置 JSON序列化 jackson序列化 Fastjson序列化 分析参考对比 更多问题参考 redis数据库操作 前言 最近在开发项目,用到了redis作为缓存,来提高系统访问速度和缓解系统压力,提高用户响应和访问速度,这里遇到几个问题做一下总结和整理 快速配置 SpringBoot整合redis有专门的场景启动器整合起来还是非常方便的 <dependency> <groupId>org.springframework.boot</groupId>

  • Java IO流对文件File操作

    目录 什么是文件 常用的文件操作 创建文件 获取文件信息 目录的操作和文件删除 什么是文件 文件,对我们并不陌生,文件是保存数据的地方,比如大家经常使用的word文档,txt文件,exce|文件..都是文件.它既可以保存一-张图片也可以保持视频,声音... 文件流 文件在程序中是以流的形式来操作的. 流:数据在数据源(文件)和程序(内存)之间经历的路径. 输入流:数据从数据源(文件)到程序(内存)的路径. 输出流:数据从程序(内存)到数据源(文件)的路径. 可以把上面的流比作人喝水 从杯子里的水

  • BAT批处理之文件与文件夹操作代码(附xcopy命令详解)

    批处理中的文件.文件夹操作,xcopy命令的用法. 一,建bat文件自动执行复制,删除命令. 例1:复制cd.dll文件至windows\system32的bat文件内容: 复制代码 代码如下: copy cd.dll %windir%\system32 例2:卸载windows\system32目录中的cd.dll,即把上面复制的文件删除: 复制代码 代码如下: del %windir%\system32\cd.dll 例3:删除download文件夹中的文件,例子如下: 复制代码 代码如下:

  • linux下用renameTo方法修改java web项目中文件夹名称的实例

    经测试,在Linux环境中安装tomcat,然后启动其中的项目,在项目中使用java.io.File.renameTo(File dest)方法可行. 之前在本地运行代码可以修改,然后传到Linux服务器上一直无法实现功能,自己一直在捣鼓,以为是window环境和Linux环境不同的原因导致,后面发现在项目中使用renameTo方法修改文件夹名称不行是因为之前改了java web项目中的js,在js中传入值到后台,后台根据值来修改文件夹名称.由于没清除缓存导致js中的代码没有刷新,所以一直出现错

  • PHP文件及文件夹操作之创建、删除、移动、复制

    创建FileUtil.php文件,内容及调用方式如下: <?php /** * 操纵文件类 * * 例子: * FileUtil::createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹 * FileUtil::createFile('b/1/2/3'); 测试建立文件 在b/1/2/文件夹下面建一个3文件 * FileUtil::createFile('b/1/2/3.exe'); 测试建立文件 在b/1/2/文件夹下面建一个3.exe文件 * FileUtil

  • python3实现的zip格式压缩文件夹操作示例

    本文实例讲述了python3实现的zip格式压缩文件夹操作.分享给大家供大家参考,具体如下: 思路:先把第一级目录中的文件进行遍历,如果是文件,则把它连同当前路径一起加入result(list),如果是子目录,则在整个目录上继续深度优先遍历,直到所有的文件都被加入.主要使用python3中zipfile模块: class zipfile.ZipFile(file [,mode [,compression [,allowZip64 ] ] ] ) 参数说明: 1.第一个参数file可以是文件(字符

  • Jupyter Notebook打开任意文件夹操作

    废话不多说 1.win+R 启动"运行" 输入cmd 点确定 2.输入 cd /d xxxxxxx 回车 jupyter notebook 回车 在这里我想打开H:\机器学习入门 3.等待一会,在浏览器中自动跳出 也可以复制图2中红框的内容,在浏览器中打开 完成! 补充知识:关于在JupyterNotebook下导入自己的模块的问题 在jupyternotebook下导入自己写的模块,有两点需要注意: 1.要将自己写的模块编程xxx.py的形式,而不是.ipynb文件 2.当更改自己的

随机推荐