- 博客(243)
- 收藏
- 关注
原创 算法-数论
特殊情况:p=1时,a数组:1、0、0、0........(任何数对1取模均为0)....... 最小循环节为4,即最多4种不同的数。ans=min(询问的区间长度,最小循环节)最小循环节T=p / gcd(d,p)思路:不难看出a数组是有循环的。.......最小循环节为3。.......最小循环节为5。l=1,r>1时,ans=2。
2025-06-08 22:05:45
491
原创 算法-背包问题
尽可能多的获得报酬,很容易想到背包问题,这里 d 是截止时间,那么我们可以用 m 来记录最大的截止时间,然后我们可以把所有物品按照 d 排序,从小到大枚举所有物品就 OK 了。
2025-05-28 15:09:04
265
原创 算法-全排列
给我们3个优惠券,每个优惠券存在两个参数a,b。表示只有商品价格大于a元的时候我们才可以优惠b元。每种商品我们可以选或者不选。给出一开始商品的价格n,问最终n的最小值为多少?举例:{1,2,3}的全排列。
2025-05-26 20:27:13
319
原创 算法-二进制运算
根据&运算符的性质,x & y的值一定不大于min(x,y),说明x&y是他们当中最小的一个。给出我们一个数x,要我们找到一个最小的y(1 <= y < x), 使得x,y,x&y这三个值可以可以构成一个三角形。
2025-05-26 20:01:20
465
原创 算法-尼姆博弈
Nim游戏是一个二人博弈,游戏的初始状态为有n堆石子,每堆石子的数量可以是任意自然数。双方轮流进行行动,每次行动可以从任意一堆石子中取走若干个石子(不能不取),取走最后一个石子的人获胜。对于这个问题,我们可以将每堆钱看做一堆石子,那么问题就转化为了Nim游戏。如果所有堆的钱数异或和为0,则小明必败,否则小明必胜。根据Nim游戏的定理,如果所有堆的石子数量的异或和为0,则先手必败,否则先手必胜。这个定理可以通过数学归纳法证明。这是一个经典的博弈论问题,可以使用Nim游戏的思想来解决。
2025-04-07 19:03:17
225
原创 数据结构-栈
判断输入的表达式中括号是否匹配(只含左右括号)2)栈顶指针指向当前位置的元素。判断一个字符串是否为对称串。1)先进后出,后进先出。不存在栈满上溢出的情况。
2024-10-06 20:03:23
394
原创 Timeline: 时间线轮播多图
对全国2014-2023年各省市的人口,做出动态柱状图/时间线轮播多图,即每隔一定时间间隔,自动的切换2014、2015、....2023各省市的人口(即2014-2023年全国省市人口排名前12的情况)
2024-10-05 17:18:48
509
原创 数据结构-顺序表的应用
1、有一个顺序表L,假设元素类型ElemType为整型,设计一个尽可能高效的算法,以第一个元素为分界线(基准),将所有小于或等于它的元素移到该基准的前面,将所有大于它的元素移动到该基准的后面。以第一个元素为基准,从右向左找一个小于或等于基准的元素x,从左向右找一个大于基准的元素y,将两者交换,直到全部找完。2、有一个顺序表L,假设元素类型ElemType为整型,设计一个尽可能高效的算法,将所有奇数移到偶数的前面。
2024-09-17 16:33:03
456
原创 数据结构-顺序表
假设一个线性表采用顺序表表示,设计一个算法,删除其中所有值等于x的元素,要求算法的时间复杂度为O(n),空间复杂度为O(1)9、插入数据元素(在第i个位置插入元素e)--ListInsert(& L, i, ElemType e)8、查找第一个值为e的元素的逻辑序号(即元素下标+1)--LocateElem( L, e)10、删除元素(在第i个位置的元素e)--ListDelete(& L, i, & e)7、获取L中的第i个元素的值--GetElem(L,i,&e)
2024-09-16 20:45:40
854
原创 对目录的操作、获取文件信息
4)关于目录分隔符号,在windows下 "/ " 和 "//" 都可以,比如如"d://aaa//bbb//hi.txt"和"d:/aaa/bbb/hi.txt",linux/unix是"/",比如 /root/home/aa.log 因此建议目录分隔符,为了兼容,linux和windows都使用"/"2)f.close():刷新并关闭此流,也就是f.close()内置的flush功能。3)删除目录 d://aaa和d://bbb//ccc。2)创建多级目录 d://bbb//ccc。
2024-09-15 10:54:27
532
原创 文件的常用操作
1)在d盘的a目录下创建abc.txt文件,并写入10句"hello,python"到文件。# 需求:读取在d盘的a目录下的hello.txt文件,hello.txt已经存在。3)在abc.txt原有内容基础上追加10句,"你好!2)在abc.txt内容覆盖成新的内容10句,"hi,c++"需求:在d盘的a目录下创建hi.txt文件,a目录已经创建好。1)判断在d盘的a目录下是否有hi.txt文件,如果有则删除。2)如果没有,则提示"文件不存在"hello.txt文件。
2024-09-14 20:28:26
396
原创 最佳实践-模板设计模式
1)设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式2)设计模式就像经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们再思考和摸索1、基本介绍抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式2、模板设计模式能解决的问题1)当功能内部一部分实现是确定的,一部分是不确定的,这时可以把不确定的部分暴露出去,让子类去实现。
2024-09-08 14:57:17
766
原创 抽象类介绍
1、默认情况下,Python不提供抽象类,Python附带一个模块,该模块为定义抽象基类提供了基础,该模块名称为abc2、当我们需要抽象基类时,让类继承ABC(abc模块的ABC类),使用@abstractmethod声明抽象方法(@abstractmethod用于声明抽象方法的装饰器,在abc模块中),那么这个类就是抽象类3、抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类的抽象方法。
2024-09-08 14:11:49
390
原创 Class对象和静态方法
9. 类 — Python 3.12.5 文档2)类本身也是对象,即:Class对象内置函数 — Python 3.12.5 文档2)@staticmethod将方法转换为静态方法3)静态方法不会接收隐式的第一个参数4)要声明一个静态方法,语法:class C:........5)静态方法既可以由类调用(如 C.f()),也可以由实例调用(如 C().f())
2024-09-08 11:08:39
363
原创 魔术方法介绍
1)在Python中,所有以双下划线__包起来的方法,统称为Magic Method(魔术方法),它是一种特殊的方法,普通方法需要调用,而魔术方法不需要调用就可以自动执行2)魔术方法在类或对象的某些事件发生时会自动执行,让类具有神奇的“魔力”。如果希望根据自己的程序定制特殊功能的类,那么就需要对这些方法进行重写3)Python中常用的运算符、for循环、以及类操作等都是运行在魔术方法之上的1)打印对象默认返回:类型名+对象内存地址,子类往往重写__str__,用于返回对象的属性信息。
2024-09-08 10:28:21
505
原创 面向对象编程-多态
1)多态顾名思义即多种状态,不同的对象调用相同的方法,表现出不同的状态,称为多态2)多态通常作用在继承关系上说明:一个父类,具有多个子类,不同的子类对象调用相同的方法,执行的时候产生不同的状态,就是多态。
2024-08-16 11:27:10
382
原创 面向对象编程-多态的引入
1)问题是:代码的复用性不高,而且不利于代码维护和功能扩展。问题分析:如果动物/食物的种类很多,怎么办?传统的方法带来的问题是什么?2)解决方案:引出->多态。
2024-08-15 20:48:02
252
原创 类型注解-type hint
1)随着项目越来越大,代码也就会越来越多,在这种情况下,如果没有类型注解,很容易不记得某个方法的参数类型是什么2)一旦传入了错误类型的参数,Python是解释性语言,只有在运行时才能发现问题,这对大型项目来说是一个巨大的灾难# 对字符串进行遍历# a:str 给形参a进行类型注解,标注a的类型是strprint(ele)# ctrl+p提示参数时,没有类型提示# 如果类型传错了,就会出现异常1)Union类型可以定义联合类型注解2)在变量、函数(方法)都可以使用Union联合类型注解。
2024-08-15 20:08:01
900
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人