- 博客(147)
- 收藏
- 关注
原创 leetCode刷题记录4-面试经典150题-2
主要就是度为0的不必非要用栈,用队列也行,队列直接作为拓扑排序的终止条件即可。没有前置关系时不需要要特判,全是度为0的节点,也可以照常执行。不要用statck,继承了Vector, 有很多锁,效率很低。修改后4ms,差不多了吧。
2024-05-10 14:45:15 438
原创 leetCode刷题记录1
200. 岛屿数量经典老题 D/BFS求连通分量个数先用BFS写了一下,好多细节错误然后代码写得很糟糕看了题解,再去优化:1、DFS代码要比BFS简单多了2、遍历过的直接修改值为非1即可,不用专门准备visit数组了3、DFS也不需要dx、dy数组,直接写四次dfs递归调用即可,看起来清爽多了重写了一下,果然舒服多了,不要总想着c++那一套,太麻烦了:206. 反转链表206. 反转链表据说递归可以做这题果然可以,类似后序遍历的写法,也很简单207. 课程表207. 课程表好久
2023-08-09 23:33:12 207
原创 leetCode刷题记录3-面试经典150题
DFS暴力枚举,过了198个,也不错了。408原题,4刷了,现在感觉很水了。注意k可能很大,需要对长度取一下模。没啥头绪,先暴力拿分,也是能力。强制加缓存,竟然超出内存限制。
2023-07-26 19:56:22 695
原创 leetCode刷题记录2
同步遍历,但是得先验证,后验的话root=null->root=new TreeNode() 连不起来。left应该小于右边所有元素 为何非要从前往后遍历呢,从后往前遍历 其实一趟就够了呀。想想之前遍历树时遇到过这个问题,当时用前缀和+Map做得,飞快呀,这里不也可以么。同样right是后面都比它大 也可以从前往后一趟遍历。或者排序后比较前最长前缀和最长后缀。当然两次遍历可以优化为1次遍历。果然可以,快了不是一点点啊。竟然才7ms,也挺快的呀。这么写,会快2~3ms。0ms 时间效率还不错。
2023-05-21 12:04:55 590
原创 leetCode刷题记录0
d 不如就算出来i=(a[i]-a[0])/d 若不能整除false 或者出现重复i false Hash[d]记录是否1~d都出现过 真是等差一定会0~len-1各出现一次的。一次遍历找到最大最小值 那么公差 d = (max-min)/(len-1) 不能整除直接return false。O(n)+一个O(n)空间的数组就OK了,完全不需要排序。然后再遍历,第i项 a[i] = a[0]+i。
2023-03-23 21:35:47 332
原创 剑指offer 81题-Python版本(前37DP之前)-Java版本(后43DP开始)
树2有的树1都有 直到树2遍历完 返回True 【可以树1有,树2没有,仍返回True,也就是树1跟着树2遍历即可 例如层序跟着树2,可以少入队一些结点】前面2种方式都过于依赖先序遍历 (导致有了递归,看起来好难 其实简单理解为先序遍历,也还好)难点: 两个子树的判断(是否有子关系),需要单独拎出来。下面这种方式完全用层序遍历 理解起来就简单多了。
2023-01-20 15:28:34 639
原创 Python科学计算库-Matplotlib
Matplotlib学习目标应用Matplotlib的基本功能实现图形显示应用Matplotlib实现多图显示应用Matplotlib实现不同画图种类matplotlib.pytplot包含了一系列类似于matlab的画图函数。1.2.2 图形绘制流程1.创建画布 – plt.figure()2.绘制图像 – plt.plot(x, y)以折线图为例3.显示图像 – plt.show()举例:展现上海一周的天气,比如从星期一到星期日的天气温度如下2、折线图(plot)与基础绘
2022-12-03 17:05:07 603
原创 Python函数4-API
长期更新1.1 random.random()1.2 random.seed(n)用于设定种子值,其中的n可以是任意数字。random.random() 生成随机数时,每一次生成的数都是随机的。但是,使用 random.seed(n) 设定好种子之后,在先调用seed(n)时,使用 random() 生成的随机数将会是同一个。(保证每次运行的随机结果一样)1.3 random.uniform(a,b)返回a,b之间的均匀分布里随机采样的浮点数,若a=b则范围
2022-12-03 14:41:34 745
原创 python面向对象小练习-学员管理系统-eval()、__dict__
使用面向对象编程思想完成学员管理系统的开发,具体如下:创建项目目录,例如:程序文件如下:需求:3.2 managerSystem.py需求:3.2.2 管理系统框架需求:系统功能循环使用,用户输入不同的功能序号执行不同的功能。3.3 main.py3.4 定义系统功能函数3.4.1 添加功能需求:用户输入学员姓名、性别、手机号,将学员添加到系统。步骤代码3.4.2 删除学员需求:用户输入目标学员姓名,如果学员存在则删除该学员。步骤用户输入目标学员姓名遍历学员数据列表,如果
2022-12-03 11:46:25 525
原创 Python模块和包
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块能定义函数,类和变量,模块里也能包含可执行的代码。
2022-11-27 19:24:54 527
原创 Python异常
在Python中,抛出自定义异常的语法为raise 异常类对象。需求:密码长度不足,则报异常(用户输入密码,如果输入的长度不足3位,则报错,即抛出自定义异常,并捕获该异常)。# 自定义异常类,继承Exception class ShortInputError(Exception) : def __init__(self , length , min_len) : self . length = length。
2022-11-26 20:17:27 136
原创 Python面向对象3-其他-多态、类属性(静态)、类方法(带参静态)、(无参)静态方法
类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了一个实例属性。多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)。
2022-11-25 23:20:45 271
原创 Python面向对象2-继承-单继承、多继承、多层继承、重写、super、私有属性方法
故事主线:一个煎饼果子老师傅,在煎饼果子界摸爬滚打多年,研发了一套精湛的摊煎饼果子的技术。故事推进:daqiu 是个爱学习的好孩子,想学习更多的煎饼果子技术,于是,在百度搜索,报班学习煎饼果子技术。故事:daqiu掌握了师父和培训的技术后,自己潜心钻研出自己的独门配方的一套全新的煎饼果子技术。不由任意内置类型派生出的类,称之为经典类。注意:当一个类有多个父类的时候,默认使用第一个父类的同名属性和方法。子类和父类具有同名属性和方法,默认使用子类的同名属性和方法。生活中的继承,一般指的是子女继承父辈的财产。
2022-11-18 17:30:30 987
原创 Python面向对象1-基础-属性(定义+获取)、当前对象self、构造器init、析构器del、打印器str、案例
Python2中类分为:经典类 和 新式类语法class 类名() : 代码 . . . . . .注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯。体验class Washer() : def wash(self) : print('我会洗衣服')拓展:经典类 (无任何继承关系 继承的()都没有)不由任意内置类型派生出的类,称之为经典类class 类名 : 代码 . . . . . .地瓜的属性被烤的时间地瓜的状态添加的调料地瓜的方法被烤用户根据意愿设定每次烤地瓜的时间。
2022-11-18 15:49:51 421
原创 Python文件-
需求:用户输入当前目录下任意文件名,程序完成对该文件的备份功能(备份文件名为xx[备份]后缀,例如:test[备份].txt)。也就是字节流,字节流也称万能流,什么格式的文件(图像、语音、文本)都能读写。readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且。name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。,这是一个无效文件,程序如何更改才能限制只有有效的文件名才能备份?mode:设置打开文件的模式(访问模式):只读、写入、追加等。答:读取内容、写入内容、备份内容…
2022-11-17 22:29:51 144
原创 Python函数3加强-lambda、多级排序、高阶函数: map()、reduce()、filter()
1、添加学员2、删除学员3、修改学员信息4、查询学员信息5、显示所有学员信息6、退出系统系统共6个功能,用户根据自己需求选取。所有功能函数都是操作学员信息,所有存储所有学员信息应该是一个全局变量,数据类型为列表。info = [ ]
2022-11-17 13:01:41 259
原创 JZ24 反转链表
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。如当输入链表{1,2,3}时,
2022-11-15 21:25:33 154
原创 python函数2_变量作用域、函数的参数(位置参数、关键字参数、缺省参数、不定长位置参数、不定长关键字参数)、拆包、引用
变量作用域全局:函数体内外都能生效局部:当前函数体内部生效函数多返回值写法return 表达式 1 , 表达式 2. . .函数的参数位置参数形参和实参的个数和书写顺序必须一致关键字参数写法:key=value特点:形参和实参的书写顺序可以不一致;关键字参数必须书写在位置参数的后面缺省参数缺省参数就是默认参数key=vlaue不定长位置参数收集所有位置参数,返回一个元组不定长关键字参数收集所有关键字参数,返回一个字典。
2022-11-14 22:33:16 151
原创 Python推导式-[xx for xx in range() if xx]
推导式的作用:简化代码推导式写法# 列表推导式 [ xx for xx in range() ] # 字典推导式 {xx1 : xx2 for . . . in . . . } # 集合推导式 {
2022-11-14 21:42:59 575
原创 Python公共操作(公共函数,运算符)-运算符 in / not in 公共方法 len() del() range() enumerate() 数据类型转换 tuple() list() set(
运算符公共方法len()del()range()数据类型转换tuple()list()set()
2022-11-14 21:13:50 232
原创 Python集合set-增加数据(add()、update())_删除数据(remove(x)、discard(x)、pop())_查找数据(in、not in)
数据序列是个大类型,包括: list,str,tuple,dict,set。,所以,当向集合内追加的数据是当前集合已有数据的话,则不进行任何操作。, 但是如果要创建空集合只能使用。是用来创建空字典的。
2022-11-14 20:42:58 2022
原创 Python字典dict-get()、keys()、values()、items()、各种优质遍历法
思考4:数据顺序发生变化,每个数据的下标也会随之变化,如何保证数据顺序变化前后能使用同一的标准查找数据呢?注意:如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回None。注意:如果key存在则修改这个key对应的值;思考1: 如果有多个数据,例如:‘Tom’, ‘男’, 20,如何快速存储?如果当前查找的key存在,则返回对应的值;思考3:如果将来数据顺序发生变化,如下所示,还能用。答:不能,数据’Tom’此时下标为2。答:字典,字典里面的数据是以。注意:字典为可变类型。
2022-11-14 20:20:28 1894
原创 Python元组tuple(元素值不可变)-查找(index、count、len、下标访问)_不支持修改(除非嵌套了可修改类型)
元组特点:定义元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型。# 多个数据元组 t1 =(10 , 20 , 30) # 单个数据元组 t2 =(10 ,)注意:如果定义的元组只有一个数据,那么这个数据后面也要添加逗号,否则数据类型为唯一的这个数据的数据类型。
2022-11-14 19:37:44 754
原创 Python列表List-查(index、count)_增(append、extend、insert)_删(del、pop、remove)_改(reverse、sort)
列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查。如果append()追加的数据是一个序列,则追加整个序列到列表 [变成嵌套列表了]列表追加数据的时候,直接在原列表里面追加了指定数据,即。需求:查找用户输入的名字是否已经存在。注意:如果查找的数据不存在则报错。列表可以一次性存储多个数据,作用:增加指定数据到列表中。 2.2 序列数据 ▲。 2.2 删除指定数据。
2022-11-08 20:37:13 1116
原创 Python字符串-切片、查找、修改、判断
字符串是 Python 中最常用的数据类型。字符串类型的数据修改的时候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。注意:num表示的是分割字符出现的次数,即将来返回数据个数为num+1个。注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。所谓字符串查找方法即是查找子串在字符串中的位置或出现的次数。注意:如果分割字符是原有字符串中的子串,分割后则丢失该子串。所谓修改字符串,指的就是通过函数的形式修改字符串中的数据。
2022-11-08 16:52:22 1311
原创 算法重要结论
1、根据二叉树前序遍历和中序遍历的递归算法种递归工作栈的状态变化得出:前序序列和中序序列的关系相当于以前序序列为入栈次序,以中序序列为出栈次序。
2022-06-23 22:43:04 1758 1
原创 JZ79 判断是不是平衡二叉树
描述输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。样例解释:样例二叉树如图,为一颗平衡二叉树注:我们约定空树是平衡二叉树。数据范围: n≤100,树上节点的val值满足 0≤n≤1000要求:空间复杂度O(1) ,时间复杂度 O(n)
2022-05-14 21:30:31 68
原创 JZ36 二叉搜索树与双向链表
描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示数据范围:输入二叉树的节点数 0≤n≤1000,二叉树中每个节点的值 0≤val≤1000要求:空间复杂度O(1) (即在原树上操作),时间复杂度O(n)注意:1.要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继2.返回链表中的第一个节点的指针3.函数返回的TreeNode,有左右指针,其实可以看成一个双向链表的数据...
2022-05-14 14:33:00 100
原创 JZ34 二叉树中和为某一值的路径(二)
描述输入一颗二叉树的根节点root和一个整数expectNumber,找出二叉树中结点值的和为expectNumber的所有路径。1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点2.叶子节点是指没有子节点的节点3.路径只能从父节点到子节点,不能从子节点到父节点4.总节点数目为n如二叉树root为{10,5,12,4,7},expectNumber为22则合法路径有[[10,5,7],[10,12]]数据范围:树中节点总数在范围[0, 5000.
2022-05-14 10:29:14 285 2
原创 JZ82 二叉树中和为某一值的路径(一)
给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点2.叶子节点是指没有子节点的节点3.路径只能从父节点到子节点,不能从子节点到父节点4.总节点数目为n例如:给出如下的二叉树, sum=22返回true,因为存在一条路径5\to 4\to 11\to 25→4→11→2的节点值之和为 22数据范围:1.树上的节点数满足 0≤n≤10000...
2022-05-09 10:54:27 274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人