数据结构之二叉树
一、二叉树二叉树(binary_tree)是一种非线性数据结构,代表“祖先”与“后代”之间的派生关系,体现了“一分为二”的分治逻辑。与链表相似,二叉树的基本单元是节点,每个节点包含值、左子节点引用和右子节点引用。
123456class TreeNode: """二叉树""" def __init__(self, val: int): self.val: int = val self.left: TreeNode | None = None self.right: TreeNode | None = None
1、二叉树常用术语
根节点(root node):位于二叉树顶层的节点,没有父节点。
叶节点(leaf node):没有子节点的节点,其两个指针均指向 None 。
边(edge):连接两个节点的线段,即节点引用(指针)。
节点所在的层(level):从顶至底递增,根节点所在层为 1 。
节点的度(degree):节点的子节点的数量。在二叉树中,度的取值范围是 ...
数据结构之哈希表
一、哈希表哈希表(hash table),又称散列表,它通过建立键key与值value之间的映射,实现高效的元素查询。
元素查询效率对比
数组
链表
哈希表
查找元素
O(n)
O(n)
O(1)
添加元素
O(1)
O(1)
O(1)
删除元素
O(n)
O(n)
O(1)
观察发现,在哈希表中进行增删查改的时间复杂度都是 O(1) ,非常高效。
1、哈希表常用操作哈希表的常见操作包括:初始化、查询操作、添加键值对和删除键值对等,示例代码如下:
1234567891011121314151617# 初始化哈希表hmap: dict = {}# 添加元素hmap[1] = "小明"hmap[2] = "小红"hmap[3] = "小绿"# 查询元素name: str = hmap[1]# 删除元素hmap.pop(2)# 遍历哈希表for k, v in hmap.items(): print(f'{k} = {v}' ...
数据结构之栈与队列
一、栈栈(stack)是一种遵循先入后出逻辑的线性数据结构。
1、栈的常用操作
方法
描述
时间复杂度
push()
元素入栈(添加至栈顶)
O(1)
pop()
栈顶元素出栈
O(1)
peek()
访问栈顶元素
O(1)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192# 初始化栈# Python 没有内置的栈类,可以把 list 当作栈来使用stack: list[int] = []# 入栈stack.append(1)stack.append(2)stack.append(3)# 访问栈顶元素peek: int = stack[-1]# 出栈pop: int = stack.pop()# 获取栈的长度size: int = len(stack)# 判断是否为空 ...
数据结构之数组与链表
数组和链表1、数组数组(array)是一种线性数据结构,其将相同类型的元素存储在连续的内存空间中。我们将元素在数组中的位置称为该元素的索引(index)。
1.1 初始化数组12arr: list[int] = [0] * 10 # 初始化长度为10的数组,nums: list[int] = [1, 2, 3, 4, 5]
1.2 访问元素索引本质上是内存地址的偏移量,因此数组的访问操作是非常高效的。
123456789def random_access(nums: list[int]) -> int: """ 随机访问数组元素 :param nums: 数组 :return: 数组元素 """ random_index = random.randint(0, len(nums) - 1) random_num = nums[random_index] return random_num
1.3 插入元素123456def insert(nums: list[int] ...
面试总结-数据结构篇
一、复杂度分析
算法效率评估
时间效率和空间效率是衡量算法优劣的两个主要评价指标。
我们可以通过实际测试来评估算法效率,但难以消除测试环境的影响,且会耗费大量计算资源。
复杂度分析可以消除实际测试的弊端,分析结果适用于所有运行平台,并且能够揭示算法在不同数据规模下的效率。
时间复杂度
时间复杂度用于衡量算法运行时间随数据量增长的趋势,可以有效评估算法效率,但在某些情况下可能失效,如在输入的数据量较小或时间复杂度相同时,无法精确对比算法效率的优劣。
最差时间复杂度使用大O符号表示,对应函数渐进上界,反应当n趋向正无穷时,操作数量T(n)的增长级别。
推算时间复杂度分为两步,首先统计操作数量,然后判断渐进上界。
常见时间复杂度从低到高排列有O(1),O(log n),O(n),O(n log n),O(n²),O(2𝑛),O(n!)等。
某些算法的时间复杂度非固定,而是与输入数据的分布有关。时间复杂度分为最差、最佳、平均时间复杂度,最佳时间复杂度几乎不用,因为输入数据一般需要满足严格条件才能达到最佳情况。
平均时间复杂度反应算法在随机数据输入下的运行效率,最接近实际应用中的算法性能。 ...
面试总结(1)
一、Python相关1、Python的函数参数传递看两个例子:
12345a = 1def fun(a): a = 2fun(a)print a # 1
12345a = []def fun(a): a.append(1)fun(a)print a # [1]
所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。
通过id来看引用a的内存地址可以比较理解:
12345678a = 1def fun(a): print "func_in",id(a) # func_in 41322472 a = 2 print "re-point",id(a), id(2) # re-point 41322448 41322448print "func_out",id(a), id(1) # func_out 41322472 41322472fun(a)print a # 1
注:具体的值在不同电脑上运行时可能不同。
可以看到,在执行完a = 2之后,a引用 ...
竞彩总结及分析240415
昨日总结:¥+0
01 让负 + 02 让胜 + 03 受让胜 + 04 让胜平
23:30 英超第33轮 阿森纳 0 - 2 阿斯顿维拉
23:30 德甲第29轮 勒沃库森 5 - 0 云达不莱梅
23:30 意甲第32轮 乌迪内斯 1 - 1 罗马
23:30 意甲第32轮 国际米兰 2 - 2 卡利亚里
今日分析:00:30 周一003 意甲第32轮 佛罗伦萨 - 热那亚
推荐:主胜
02:45 周一004 意甲第32轮 亚特兰大 - 维罗纳
推荐:(-1)让负
03:00 周一005 英超第33轮 切尔西 - 埃弗顿
推荐:主胜
安装rclone挂载pikpak作为影视盘
之前PT刷流的时候开了几台年合约NC的vps,目前馒头等几个pt站已经刷毕业了。vps处于闲置的状态。所以准备捣鼓一下,把其中的一台搭建一个小电影影视库,硬盘使用pikpak云盘,懂的都懂。
一、安装rclone根据官方文档使用以下命令安装
1sudo -v ; curl https://rclone.org/install.sh | sudo bash
检查是否安装成功
123456789root@baiweispace:~# rclone versionrclone v1.66.0- os/version: debian 11.9 (64 bit)- os/kernel: 5.10.0-28-amd64 (x86_64)- os/type: linux- os/arch: amd64- go/version: go1.22.1- go/linking: static- go/tags: none
二、挂载Pikpak执行:
1rclone config
您应该会看见
1234567891011121314Current remotes:Name ...
PT盒子(seedbox)入门指南
什么是PT盒子(seedbox)种子盒子(英语:seedbox)是用于从点对点网络上传和下载电脑文件的高带宽远程服务器。其带宽通常介于100 Mbit/s至20 Gbit/s。种子盒子获取文件后,有访问权限的人可以将文件下载到他们的个人电脑。
以上是维基百科的解释,简单的讲盒子就是一种大带宽主要指上行带宽的远程服务器。
本文提供一个搭建刷流服务器的基本配置流程。目前我也处于入门阶段,写下本文,以备后续查阅。
盒子选择购买用于刷流的vps服务商常见的有:hz(HETZNER)、op(oneprovider)、nc(netcup)、甲骨文等,这里主要介绍我在使用的进行记录。
hz是目前刷流的主力服务器,大部分的pter都聚集于此。所以使用hz盒子,刷流的效率会很高,每个月大约在200T左右。但是hz注册比较麻烦,账号容易被BAN,楼主也还没有注册上。以后注册了再在此补充。
hz购买链接
op属于是hz退而求其次的选择,他刷流的效率大约在hz的70%左右。注册容易,价格也会便宜一些,这个服务器是共享带宽,所以非常看脸。这也是我第一台刷流的vps。根据我的经验尽量不要选择H ...
黑群晖折腾记(1): 硬件选购
自建黑群晖记录—硬件篇群晖nas其实就是一台电脑,只是它的功能相较于个人电脑没有那么丰富,它最主要的是完成文件的上传和下载,所以坊间一直流传白群是买软件送硬件,因为nas确实不需要强劲的性能,目前主流的群晖处理器也都是几年前的产物,群晖最牛的还是它的软件系统。
因此我作为入门玩家还是选择自己攒一些电子垃圾,装一台黑群晖。
首先看一下整体配置,大部分是淘宝购买,主要本人鉴别能力一般,而且闲鱼掏需要花费更多的时间,不过最终整体下来价格不会差太多。
名称
型号
价格
cpu
i3-8100T
155(淘宝)
主板
纳斯B365
499(淘宝)
内存
镁光DDR4 2666 16g
137(淘宝)
散热器
猫头鹰NF-A12x15
128(淘宝)
机箱
迎广MS-04
400(闲鱼)
硬盘
希捷酷狼8T
1208(淘宝)
总计
1319(除硬盘)
一、机箱目前市面上有很对DIYnas机箱可以选择,需要自己进行对比,我选择的是迎广MS-04,主要是因为它做工优秀,拓展齐全,默认支持4+2硬盘位,并且自带265W的1u电源。
二、主板主板选择itx小板 ...