首页
关于
Search
1
我的博客网站正式上线辣
102 阅读
2
FreeCharts正式版release
62 阅读
3
浅析数字编码
52 阅读
4
TC264主板绘制所遇问题及解决
45 阅读
5
绷不住了
36 阅读
学习
日常
登录
/
注册
Search
标签搜索
FreeCharts
Shijian Wen
累计撰写
13
篇文章
累计收到
114
条评论
首页
栏目
学习
日常
页面
关于
搜索到
13
篇与
的结果
2024-12-23
由概率论中的顺序统计量得到的小顶堆求第k个元素的方法
今天概率论老师讲了数理统计部分,里面有个顺序统计量,定义是:Xk∗=max{min{Xi1,Xi2,...,Xin−k+1}},k=1,2,...,n(没想到html还能内嵌)当时我就灵机一闪,这不是用堆求kth个数的问题吗!而且一般求第k大的数都是基于大顶## 堆,按照书上这个定义不就可以用小顶堆求kth问题了吗,果然世界的本质就是数学,话不多说,用py实现一下:import heapq def kth_largest_maxheap(nums, k): #默认为小顶堆,转变为大顶堆 max_heap = [] for num in nums: # 将当前元素相反数加入堆,转变为大顶堆 heapq.heappush(max_heap, -num) # 如果堆的大小超过 k,移除堆顶元素 if len(max_heap) > k: heapq.heappop(max_heap) # 堆顶元素就是第 k 大的元素,加负号恢复值 return -max_heap[0]def kth_largest_minheap(nums, k): #默认为小顶堆 min_heap = [] min_list = [] for num in nums: heapq.heappush(min_heap, num) # 取出n-k+1个体中的最小值 if len(min_heap) > len(nums)-k: min_list.append(heapq.heappop(min_heap)) print(min_list) return max(min_list)drive codeif __name__ == '__main__': nums = [3, 7, 1, 9, 6, 4, ] k = 4 print(kth_largest_maxheap(nums, k)) print(kth_largest_minheap(nums, k))结果输出符合预期:)
2024年12月23日
13 阅读
0 评论
2 点赞
2024-12-17
CUPT2025 Lato Lato实验分析
有关资料和使用vpthon实现的简单仿真代码都在:https://github.com/ShijianWen3/cupt_LatoLato
2024年12月17日
11 阅读
0 评论
1 点赞
2024-12-14
Cloudfare白嫖vless服务器
长期以来使用付费的科学上网服务,但是一直不是很稳定而且哪有白嫖的爽:)最近发现了使用Cloudfare的Worker做转发进行科学上网的方法,一天可以免费100000次访问(用不完根本用不完)而且延迟在300ms以下,GPT,Google啥的访问毫无压力这个vless服务器的搭建只需要两个东西: 一个Cloudfare账号,一个域名(甚至也可以在Cloudfare白嫖)具体怎么做我就不说了,毕竟...你懂的不过可以指条路: h-t-t-ps://github.com/yonggekkk/Doprax-Xray (之前指错路了)https://github.com/yonggekkk/Cloudflare_vless_trojan12/16: 更新一个tip, 如果使用一段时间后域名访问出现Fail to Connect 情况, 只需要将原来的Worker删除然后重新创建即可, uuid和proxyip可以继续使用之前的
2024年12月14日
20 阅读
2 评论
6 点赞
2024-11-22
numpy库兼容问题
RT,相信会有人看过这个报错: RuntimeError: module compiled against API version 0x10 but this version of numpy is 0xe或者是这个: A module that was compiled using NumPy 1.x cannot be run in NumPy 2.1.3 as it may crash. To support both 1.x and 2.x versions of NumPy, modules must be compiled with NumPy 2.0.不过大家报错的版本号可能不一样,numpy版本非常多,而很多库不对numpy做兼容处理,甚至你都不一定知道上面的hex代表什么,这个在numpy的仓库中可以找到: # 0x00000008 - 1.7.x # 0x00000009 - 1.8.x # 0x00000009 - 1.9.x # 0x0000000a - 1.10.x # 0x0000000a - 1.11.x # 0x0000000a - 1.12.x # 0x0000000b - 1.13.x # 0x0000000c - 1.14.x # 0x0000000c - 1.15.x # 0x0000000d - 1.16.x # 0x0000000d - 1.19.x # 0x0000000e - 1.20.x # 0x0000000e - 1.21.x # 0x0000000f - 1.22.x # 0x00000010 - 1.23.x # 0x00000010 - 1.24.x # 0x00000011 - 1.25.x # 0x00000012 - 2.0.x有些人直接--upgrade装最新版就解决了,但是有些人,比如说我遇到的,明确要求使用1.23.x版本,其他新版是不兼容的(1和2之间也不兼容:()要是兼容性更好一点就完美了,可是有库用就不错了,要啥自行车:)
2024年11月22日
31 阅读
0 评论
4 点赞
2024-11-21
python中的深浅拷贝
如题,这里复习一下python的深浅拷贝问题(因为考试的时候有道题做错了:()首先看定义:浅拷贝:浅拷贝会创建一个新的对象,但新的对象仅复制原对象的第一层内容,对于嵌套的子对象,仅复制引用,不会递归拷贝内部对象。 import copy original = [1, [2, 3], 4] shallow = copy.copy(original) shallow[0] = 99 # 修改第一层元素 shallow[1][0] = 88 # 修改嵌套的子对象 print("Original:", original) # Original: [1, [88, 3], 4] print("Shallow:", shallow) # Shallow: [99, [88, 3], 4] 深拷贝:深拷贝会创建一个新的对象,并递归拷贝所有嵌套的子对象,使新对象完全独立于原对象。 import copy original = [1, [2, 3], 4] deep = copy.deepcopy(original) deep[0] = 99 # 修改第一层元素 deep[1][0] = 88 # 修改嵌套的子对象 print("Original:", original) # Original: [1, [2, 3], 4] print("Deep:", deep) # Deep: [99, [88, 3], 4] 但是,我一直有个误区,把"引用传递"机制当成浅拷贝,这是两个不同的概念,python基于值的内存管理造就了引用传递,但是引用传递在对象的可变性不同时又会呈现不同的效果,比如在函数传参时,可变对象(list)和不可变对象(tuple)都是引用传递,但是效果是不一样的: def test(lst:list, string:str): lst[0] = 10 string += 'a' return string lst = [1,2,3] string = 'vscode' string_new = test(lst, string) print(lst, string, string_new) #输出 [10, 2, 3] vscode vscodea由于传递的是引用,所以对函数内列表形参修改时也会影响外部的原始列表,但是字符串由于是不可变对象,所以当你在函数内对其进行一些合法的操作时,会创建一个新的对象用于操作,而不会修改原始对象. 写下此文,希望下次 不再犯错
2024年11月21日
14 阅读
0 评论
2 点赞
1
2
3