严格来讲并查集并不是一个数据结构,而是一个算法,毕竟其英文名直译是联合查找,但作为一个系列,还是当做数据结构讲了。 学术一点讲的话,并查集是用来找一个无向图的联通分量。...接下来以此为例分析一下如何使用并查集算法。 并查集 首先我们有一个parent数组来代表每一个节点的祖先,数组的每一项默认为节点的序号。...parent_b Find 找出一个节点祖先的操作find的流程则是: 如果parent[a] = a,返回a 否则返回find(parent[a]) 我们从关系[1, 2]开始,它们的祖先不同,让parent...= self.find(n): self.parents[self.find(m)] = self.find(n) self.groupNum -= 1...结语 并查集经常出现在算题题目中,大家应该理解并掌握,最关键的是判断出一个场景是适用于并查集,如果当时PAT考试的时候我看出来最后一题用的是并查集,也能拿98分了。
没想到有一天我也能搞懂并查集,orz......实际上本文算是《Algorithms》一书的读后感 1.并查集概述 并查集的数学模型是一组不相交的动态集合S={A,B,...}....,9}他们都是孤立的,随着程序的执行,用户输入不同的操作,比如union(3,4),union(3,8)等等,随着数据的输入,整个图的连通性也会发生变化,所以并查集常常用来解决动态连通性问题 Union-Find...API 上面介绍了并查集的概念,下面我们就要设计并查集。...还是有的,即将节点的父节点指向该节点的爷爷节点,这一点很巧妙,十分方便且有效,相当于在寻找根节点的同时,对路径进行了压缩,使整个树结构扁平化。...并查集的应用,可以参考我的另外一篇文章并查集应用举例
并查集介绍 我们之前讲的树结构,都是由父亲节点指向孩子节点,而并查集却是由孩子指向父亲的这样一种数据结构。 给出图中任意的两点,问这两点之间是否可以通过一个路径连接起来?...本文设计的并查集主要支持两个操作: union(p,q) 并,对传入的两个数据p和q,在并查集内部将这两个数据,以及这两个数据所在的集合合并起来。... 为什么需要路径压缩优化呢?...基于前面的四种实现方式,我们会发现下图中的三颗并查集数,无论是find()还是isConnected()都是等效的 由于并查集的查找方法是和树得高度相关的,所以我们只要让树得高度降低,就都是对并查集的优化...但实际情况并不都是如此,所以我们只能尽可能降低树得高度,这就是我们的路径压缩优化。那我们的路径压缩是如何实现的呢?
打包并压缩目录概要 tar -zcvf 123.tar.gz 123 把目录和文件打包成123.tar.gz tar -zxvf 123.tar.gz 把文件和目录解包 tar -jcvf 123.bz2...han/hanfeng/ hf/han/hanfeng/66.txt hf/han/hanfeng/1.txt hf/han/wu.txt hf/1.txt 1.txt 4.txt 总结 我们会发现,压缩的越小
查找当前目录下的文件,并对查找结果执行ls -l 命令 2. 查找当前目录下,24小时内更改过的文件,并进行删除操作(慎用!!!,删除没有提示) 3....查找当前目录下的以.log结尾的文件或目录,并移动到test目录下 find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了...大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。...如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。 二. 使用示例 1. 查找当前目录下的文件,并对查找结果执行ls -l 命令 命令: find ....查找当前目录下的以.log结尾的文件或目录,并移动到test目录下 命令: find -name "*.log" -exec mv {} test \; 输出: [root@localhost home
find 命令在linux中是很常用到的一个查找命令,它的功能非常地强大。... ~ -name "*.txt" -print #在$HOME中查.txt文件并显示 $find . .../conf.d/README 注: 查当前目录下的所有普通文件,并在 -exec 选项中使用 ls -l 命令将它们列出 在/logs目录中查找更改时间在5日以前的文件并删除它们: $ find logs...f -exec ls -l {} \; 查询文件并询问是否要显示 [root@book class]# find ./ -mtime -1 -type f -ok ...参考推荐: Linux下which、whereis、locate、find 区别 Linux中find常见用法示例 Linux xargs命令(推荐)
查找并删除某目录下1天前的文件场景:某oracle库生成的过期归档备份很多,通过rman没有清理掉,需删除一天以前的归档备份,假设归档备份的格式为log。...命令:cd {归档日志所在的绝对路径,请确认目录下只有日志}find ./ -mtime +1 -name "*.log"find ./ -mtime +1 -name "*.log" -exec rm...-f {} \;注意:请务必确认执行find命令的目录下没有被find匹配到不应删除的文件,否则悔之晚矣!...查找并带目录拷贝某目录下一天内的文件场景:拷贝/var/log下所有一天内生成的日志到/tmp进行查看。...2)示例命令里,find后跟的源目录绝对路径,如果不需要拷贝某一层次以上的目录,则cd到该层次目录下再使用相对路径执行命令。
Linux 命令 find 命令解析 Linux 命令 find 是一种查找文件和目录的工具,可以通过文件类型、日期、大小等属性来查找符合要求的文件。...find 的一般形式如下: find [path] [option] [action] 其中,参数 path 表示要查找的目录,option 表示查找的选项,action 表示对查找到的文件要执行的操作...为方便读者理解,林一写个具体的 demo: find /data/logs -name "access.log*" -type f -mtime -7 -exec cp {} /backup/ ; 解析...Linux 命令 find 命令注意事项 find 命令搜索文件或目录是从给定的路径开始向下递归,找到所有符合条件的文件或目录: -exec选项后面的命令必须以;结尾表示命令结束; -prune选项表示不进入指定的目录查找文件...,可提高查找效率; -regex选项可以使用正则表达式查找文件; find 命令的属性条件可以使用-mtime、-atime和-ctime,分别表示文件的修改时间、访问时间和修改权限的时间。
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。...查找系统中24小时以内被访问过的文件 > find / -atime -1 查找系统中24小时以内被修改过内容的文件 > find / -mtime -1 查找系统中48小时之前被修改过内容的文件 >...find / -mtime +1 查找系统中所有的.log结尾的文件 > find / -name *.log 查找系统中文件大于100M的文件 > find / -size +100M b —— 块(...100M -size -500M 查找系统中文件大于500M的文件,并删除 > find / -type f -size +500M -delete 或 > find / -type f -size +...查找系统中的空文件 > find / -empty -type f 原文链接:https://rumenz.com/rumenbiji/linux-find.html 微信公众号:入门小站
一.并查集及其优化 - 并查集:由若干不相交集合组成,是一种简单但是很好用的数据结构,拥有优越的时空复杂性,一般用于处理一些不相交集合的查询和合并问题。...并查集的优化方法(改进时间的启发式策略) 1 路径压缩(Path Compression)是一种在每次使用“ 查找”(Find_Set)时压扁树结构的方法。...可以想象,如果树比较极端,退化成一条链了,那么在最坏的时候每次查询都达到了O(n),而路径压缩就可以提高效率。 而且,路径压缩并不改变任何节点的秩,但是会改变子树的高度....- 带权并查集,是指结点存有权值信息的并查集。...思路:这里明显可以使用并查集,但是给的信息是不同集合的,而并查集是保存同一个集合,所以单纯的并查集是不行了,故增加一个flag,来标记当前结点和根结点的关系,用一个并查集来维护所有的结点。
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。...查找系统中24小时以内被访问过的文件 > find / -atime -1 查找系统中24小时以内被修改过内容的文件 > find / -mtime -1 查找系统中48小时之前被修改过内容的文件...> find / -mtime +1 查找系统中所有的.log结尾的文件 > find / -name *.log 查找系统中文件大于100M的文件 > find / -size +100M b...+100M -size -500M 查找系统中文件大于500M的文件,并删除 > find / -type f -size +500M -delete 或 > find / -type f -size...查找系统中的空文件 > find / -empty -type f 原文链接:https://rumenz.com/rumenbiji/linux-find.html
如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。 查找当前目录下所有.txt文件并打印出详细的文件信息 > find ....-type f -name "*.txt" -exec ls -l {} \; 查找当前目录下内容修改时间是30天以前的.log文件并删除 > find ....查找当前目录下内容修改时间是30天以前的.log文件并删除,删除前给出提示 > find ....find命令首先匹配所有文件名为passwd*的文件,然后执行grep命令看看在这些文件中是否存在一个root用户 查找当前目录下所有的.log文件并移动到指定目录 > find ..../rumenz \; 原文链接:https://rumenz.com/rumenbiji/linux-find-exec.html
linux 中find 常用示例解析 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression] 其实[-H] [-L] [...-P] [-D debugopts] [-Olevel]这几个选项并不常用(至少在我的日常工作中,没 有用到过),上面的find命令的常用形式可以简化为 find [path…] [expression...] find 命令的参数: path:find命令查找文件的目录路径 例如:.表示当前路径,/表示根路径 expression:expression 可以分为...find ....-name "*.conf" -mtime +5 -ok rm { } \; 在当前目录中查找所有文件名 以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示
find 命令在Linux系统中用于在文件系统中搜索符合特定条件的文件和目录。...以下是find命令的详细文档和一些示例: 命令语法 find 命令的基本语法如下: find [path] [expression] 其中,path 参数指定要搜索的目录或文件路径。...例如:find /var/log -user root 示例 以下是一些使用 find 命令的示例: 搜索指定目录下所有 .txt 文件: find /home/user/documents -name...7 天内修改过的文件: find /home/user -mtime -7 搜索指定目录下所有属于 user 用户的文件: find /home -user user 以上仅是 find 命令的一些常见示例...可以查看相关的Linux文档以获取更详细的信息和示例。
查询当前目录下所有权限是777的文件 > find . -perm 777 | xargs ls -al 查询当前目录下所有的.txt文件,并输出到指定文件a.log(没有换行) > find ....查询当前目录下所有的.txt文件,并输出到指定文件b.log(有换行) > find ....-perm 777 | xargs chmod o-w 查找当前目录下所有的.txt文件,并找出包含rumenz字符串的文件 > find ....-name *.txt | xargs grep -n "rumenz" 查找当前目录下所有的.txt文件,并移动到指定的目录 > find ....原文链接:https://rumenz.com/rumenbiji/linux-find-xargs.html
查询当前目录下所有权限是777的文件 > find . -perm 777 | xargs ls -al 查询当前目录下所有的.txt文件,并输出到指定文件a.log(没有换行) > find ....查询当前目录下所有的.txt文件,并输出到指定文件b.log(有换行) > find ....-name *.txt | xargs -n 1 echo > /tmp/b.log -n 1 每行只输出一个 查询当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限 > find...-perm 777 | xargs chmod o-w 查找当前目录下所有的.txt文件,并找出包含rumenz字符串的文件 > find ....-name *.txt | xargs grep -n "rumenz" 查找当前目录下所有的.txt文件,并移动到指定的目录 > find .
一、find 命令格式 1、find命令的一般形式为; find pathname -options [-print -exec -ok ...] 2、find命令的参数; pathname...: find命令所查找的目录路径。...大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。...在/logs目录中查找更改时间在5日以前的文件并删除它们: $ find logs -type f -mtime +5 -exec rm { } \; 记住:在shell中用任何方式删除文件之前,应当先查看相应的文件...在下面的例子中, find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 $ find .
查询当前目录下所有权限是777的文件 > find . -perm 777 | xargs ls -al 查询当前目录下所有的.txt文件,并输出到指定文件a.log(没有换行) > find ....查询当前目录下所有的.txt文件,并输出到指定文件b.log(有换行) > find ....-perm 777 | xargs chmod o-w 查找当前目录下所有的.txt文件,并找出包含rumenz字符串的文件 > find ....-name *.txt | xargs grep -n "rumenz" 查找当前目录下所有的.txt文件,并移动到指定的目录 > find ....原文链接:https://rumenz.com/rumenbiji/linux-find-xargs.html 微信公众号:入门小站
领取专属 10元无门槛券
手把手带您无忧上云