![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
sueayee
这个作者很懒,什么都没留下…
展开
-
广度优先搜索-Python
基本思路:从起点出发,每次都尝试访问同一层的节点,如果同一层都访问完了,再访问下一层,最后广度优先搜索找到的路径就是从起点开始的最短合法路径。模板:1.不需要确定遍历的层数while queue 不空: cur = queue.pop() for 节点 in cur的所有相邻节点: if 该节点有效且未访问过: queue.push(该节点)2.需要确定遍历的层数level = 0while queue 不空: size = q原创 2022-04-14 15:03:35 · 751 阅读 · 0 评论 -
二叉树的匹配-Python
二叉树的镜像# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def mirrorTree(self, root: TreeNode) -> TreeNode: if no原创 2022-04-12 17:19:48 · 601 阅读 · 0 评论 -
深度优先搜索-Python
基本思路:深度优先遍历图的方法是,从图中某顶点v出发:(1)访问顶点v;(2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。例1:图像渲染输入: image = [[1,1,1],[1,1,0],[1,0,1]],sr = 1, sc = 1, newColor = 2输出: [[2,2,2],[2,2,0],[2,0,1]]解析原创 2022-04-12 11:58:01 · 1231 阅读 · 0 评论 -
二叉树的遍历-Python
前序遍历根-左-右# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def preorderTraversal(self , root: TreeNode) -> List[int]: res = [] def preorder原创 2022-04-11 22:22:51 · 116 阅读 · 0 评论 -
约瑟夫环-Python
N个数字排成一个圆环,每次删除第n个数字,求最后剩下的一个数字。经典的约瑟夫环问题,例如,N = [0,1,2,3,4,5,6,7,8,9],每次删除第3个数字,每次删除后,N的数值如下:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9][3, 4, 5, 6, 7, 8, 9, 0, 1][6, 7, 8, 9, 0, 1, 3, 4][9, 0, 1, 3, 4, 6, 7][3, 4, 6, 7, 9, 0][7, 9, 0, 3, 4][3, 4, 7, 9][9, 3,原创 2022-04-09 18:40:31 · 3943 阅读 · 0 评论 -
nums[:]-Python
变量包含value和id,value就是变量里存储的值,id就是变量的实际存储的内存地址,根据这个内存地址我们就可以找到对应的变量数据。使用nums = nums[k:] + nums[:k] 修改列表时,nums的id地址改变了,若从内存去读取nums值,还是会返回原来列表。使用nums[:] = nums[k:] + nums[:k]修改列表时,nums的id地址不变,若从内存去读取nums值,则会返回修改后的列表。nums1 = [1,2,3,4,5,6,7]print(id(nums1),n原创 2022-04-07 12:07:40 · 1309 阅读 · 0 评论 -
二分法查找-Python
中心思想:数列从小到大排序,定义查找的范围 [left,right],每次取中点的数值mid跟target比较,如果相等,则mid为查找目标,如果不等则根据nums[mid]和target的大小缩小查找范围具体步骤:1、设定左右指针2、计算中间值mid,并判断nums[mid]与target的大小3、如果nums[mid] < target,左指针右移left = mid + 14、如果nums[mid] > target,右指针左移right= mid - 15、重复2、3、4步原创 2022-04-06 16:46:15 · 777 阅读 · 0 评论 -
函数装饰器-Python
嵌套函数:在函数中定义函数def A(k = "enter" ): print("This is A function") def B(): return "This is B function" def C(): return "This is C function" print(B()) print(C()) A()>>> This is A function>>> This is B原创 2022-03-31 00:51:51 · 1085 阅读 · 0 评论 -
*args和**kwargs参数
*args如果我们不确定往一个函数中传入多少参数,或者我们希望以元组(tuple)或者列表(list)的形式传参数的时候,可以使用*args。**kwargs如果我们不知道往函数中传递多少个关键词参数或者想传入字典的值作为关键词参数的时候,可以使用**kwargsdef func(*args, **kwargs): print(args,kwargs)func()>>> () {}func(*List)>>> (1, 2, 3) {}func(*T原创 2022-03-30 23:24:36 · 387 阅读 · 0 评论 -
获取文件名-Python
os.walk()获取当前目录路径,当前目录路径下所有子目录及非目录子文件walk()语法格式如下:os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])top – 根目录下的每一个文件夹(包含它自己),产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。topdown --可选,为True或者没有指定, 一个目录的3-元组将比它的任何子文件夹的3-元组先产生原创 2022-03-30 22:20:22 · 2231 阅读 · 0 评论 -
文件读取-Python
读取整个文件file_path = ('D:/filetext/A.txt')with open(file_path,encoding='UTF-8') as file_object: contents = file_object.read()print(contents)file_object.close()>>> 静夜思床前明月光疑似地上霜举头望明月低头思故乡逐行读取逐行读取时每行后面会打印一个空白行,因为文件中每行的末尾都有一个看不见的换行符,而函数原创 2022-03-30 21:16:42 · 268 阅读 · 0 评论 -
引用、传递引用、浅复制与深复制-Python
列表是可变数据类型,它的值可以增加,删除或改变字符串是不可变数据类型,它不能被更改引用变量存储的是对计算机内存位置的引用,这些位置存储了值。List1 = [1,2,3]List2 = List1List2[1] = 'abc'print(List1)>>> [1, 'abc', 3]print(List2)>>> [1, 'abc', 3]print(id(List1), id(List2))>>> 2021813609032原创 2022-03-30 20:29:18 · 85 阅读 · 0 评论 -
进制转换-Python
**二进制转十进制s为字符串int(s,2)**print(int('1100',2))>>> 12八进制转十进制s为字符串int(s,8)print(int('702',8))>>> 450十六进制转十进制s为字符串int(s,16)print(int('A2',16))>>> 162十进制转二进制n为整型,返回的是字符串bin(n)print(bin(8))>>> 0b1000pr原创 2022-03-30 18:17:33 · 566 阅读 · 0 评论 -
去重及排序-Python
去重set ()函数 ,无序集合,使用set去重返回的是新的集合对象。对于l列表来说,使用set了之后返回的是无序集合,如果需要返回的是list,需要使用list()做一次类型转换。当列表里面的数值为数字时,使用set()函数会进行排序,若为字符,则不会排序,且每次运行返回的顺序都不一样,即set()函数的无序性。List1 = [1,3,2,2,1]print(set(List1))>>> {1, 2, 3}print(list(set(List1)))>>原创 2022-03-30 16:06:22 · 4331 阅读 · 0 评论 -
回溯算法-Python
代码框架res = []def backtrack(选择列表, 路径): if 满足结束条件: res.append(路径): return for 选择 in 选择列表: 做选择 backtrack(选择列表, 路径): 撤销选择全排列nums = [1,2,3]res = []def backtrack(nums,pos,end): if pos == end: res.append(nums[:]) return res for i in range原创 2022-03-30 12:24:53 · 709 阅读 · 0 评论