自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 Vue3学习总结

9、计算属性:使用computed属性,可以给template传递一个经过计算后的值,当这个值放在缓存中,当这个值不发生改变时,则JS不会再次执行computed,这样就能提高运行速度。4、属性绑定:使用v-bind:命令来实现属性绑定,如果是绑定单个属性,命令为v-bind:attr=“attr”,也可以写为v-bind:attr,也可以简写为:。11、绑定CSS样式,是通过绑定style属性来实现的,语法为v-bind:style=“myStyle”.其中,myStyle是在vue中自定义的样式。

2024-07-28 16:18:30 348 1

原创 2024-3-8 python管理有序序列使用bisect模块,存放数字array比list更快更省空间

bisect.bisect(sequnce, target):返回target在sequence中的位置,该位置的标准是target放在这位置的后方,sequence仍然能保持有序。比如sequence = [1,3,4,5,10],target=6,则bisect.bisect(sequnce, target)返回值为4.bisect.insort(sequence,target):将target插入有序序列中,并能继续保持sequence的顺序。

2024-03-08 22:39:59 345

原创 2024-3-7 python创建二维列表谨防连用两个*,列表的增量赋值(+=或*=)与元组的增量赋值的差异

而元组没有实现__iadd__方法,在python底层,实际上执行的是__add__方法,把老元组和新元组相加,然后组成一个新元组,变量的引用地址(即内存中的位置)会发生变化。因此,对不可变序列进行重复拼接操作的话,效率会很低,因为每次都有一个新对象, 而解释器需要把原来对象中的元素先复制到新的对象里,然后再追加新的元素。列表实现了__iadd__方法,因此它的增量赋值,是真实的增量赋值,即把新列表添加在老列表之后,变量的引用地址(即内存中的位置)并没有变化。#1、python创建二维列表谨防连用两个*

2024-03-07 22:39:06 305

原创 2024-3-6 python列表的切片赋值

如果把切片放在赋值语句的左边,或把它作为del操作的对象,我们就可以对序列进行嫁接、切除 或就地修改操作。如果切片内带了step参数的值,则需要保证右边列表内的元素个数与左边切片内的元素个数相等,否则就会报错。

2024-03-06 23:20:08 319

原创 2024-3-5 python 序列小知识点

此处,for循环里的 i 修改了之前的 i 变量的值。

2024-03-05 22:49:14 209

原创 2024-3-4 如何写出具有python风格的代码

python风格是指自定义的数据类型表现得得与内置类型一样。比如,我创建了一个类,它的实例不用调用类的方法就可以实现迭代、切片,可以直接使用±*/等运算符。通过实现特殊方法,自定义数据类型就可以表现得跟内置类型一样,从而让我们写出更具python风格的代码。例如,在自定义类中,实现__getitem__的特殊方法,则该类的实例就可以直接使用[ ]符号,表现得和内置的序列类型(如list)一样进行读取元素、切片、迭代等操作。再比如,实现_add__特殊方法,则该类的实例就可以直接使用+号。

2024-03-04 23:07:52 204

原创 我的错题小结

1,reduce函数,function变量传入的函数,必须是接收两个参数的函数。同时要注意,这个函数输出结果应可以作为这个函数的输入。2、format函数必须由字符串来调用,当需要对浮点数做保留N位小数的操作时,记得{}中需要有:号。即"{:.2f}".format(3.1456),不要忘记了双引号和冒号。

2022-10-12 20:21:28 162 1

原创 Python学习备忘录2

Python中高级知识学习笔记

2022-10-04 17:54:37 371

原创 Python学习备忘录

Python学习笔记,持续更新中

2022-09-09 07:58:02 680

原创 动态规划-分苹果:m个苹果,n个盘子的分法个数

题目:有m个苹果,n个盘子,每个盘子都可以放无数个苹果,问有多少种分法?

2021-12-04 19:23:45 2661

原创 python二叉树,层序添加节点,层序遍历节点,二叉搜索树,前序遍历

class Node: def __init__(self,value): self.value = value self.left = None self.right = None def add_by_order(self,value): """ 层序添加节点,从上到下,从左到右依次添加节点。 :param value: 要添加的节点的值 :return: None

2021-12-04 10:55:07 1043

原创 leetcode 437路径总和,前缀和知识总结

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-sum-iii分析:这是一道典型的考前缀和知识的题。以我的理解,所谓前缀和,就是求从根节点到当前节点所经过的所有节点的和。设根节点的为root,当前节点

2021-11-21 16:33:21 831

原创 最少的硬币数(完全背包问题)

题目:给定正整数数组coins表示硬币的面额和一个目标总和t,请计算凑出总和t至少需要的硬币数目。每种硬币可以使用任意多枚。如果不能用输入的硬币凑出给定的总和,则返回-1。例如,如果硬币面额为[1,3,9,10],总额t为15,那么至少需要3枚硬币,即2枚面额为3的硬币及一枚面额为9的硬币。分析:这个也是求总和的,不过每个元素可以取无限次,因此就是完全背包问题。可以使用一个矩阵来记录凑出总额最少需要多少个硬币。矩阵横轴为面额,纵轴为总和t。如下图所示,依次填充表格设上述表格的名字为board,位置都从

2021-11-14 19:57:07 1520

原创 《剑指offer》面试题38:每日温度

题目:输入一个数组,它的每个数字是某天的温度,请计算每天需要等几天才能出现更高温度。例如:输入[35,31,33,36,34],那么输出为[3, 1, 1, 1, 0].由于第一天温度为35度,要等3天才出现更高的温度36度分析:定义一个辅助列表,里面存储要等几天才能有更高温度。逐个遍历温度列表里的温度,第一个温度时,辅助列表里要等待的天数为0.后面从第二天的温度起,如果不比以前的温度高,则等待0天。如果比以前的温度高,则从此天往前看,一直看到第一天。如果第A天出现比此天温度低,并且辅助列表里第A天

2021-11-04 22:41:56 157

原创 《剑指offer》面试题37:小行星相撞

题目:输入一个表示小行星的数组,数组中的每个数字的绝对值表示小行星的大小,数字的正负号表示小行星的运动方向,正号表示向右飞行,负号表示向左飞行。如果两颗小行星相撞,那么体积小的小行星将会爆炸消失,体积大的小行星不受影响。如果相撞的两颗小行星大小相同,则它们会同时爆炸消失。飞行方向相同的小行星永远不会相撞,求最终剩下的小行星。例如:有6颗小行星[4,5,-6,4,8,-5],它们相撞之后最终剩下三颗小行星[-6,4-8].分析:可定义一个辅助的列表,然后从左往右遍历小行星列表,如果小行星是向右飞行的,

2021-11-03 21:29:00 153

原创 《剑指offer》面试题101:分割等和子集(没有使用动态规划背包问题)

大家都说这是一道背包问题,但是我觉得为啥要用背包解决呢?这类题,如果能够满足题目要求,能将一个序列分成等和的两半,那必然是数值小的一撮等于数值大的一撮,那就可以将序列排序,然后依次累加,如果累加和恰好等于总和的一半,那么就可以肯定后面那一半也等于总和的一半了,那么该序列就可以分成两个等和子序列。如果累加和在没有等于总和一半的时候,就直接超出了总和的一半,那么就可以肯定这个序列无法分成等和的两个子序列。开始的时候也可以偷个懒,先算总和,如果总和是奇数,那么不用算,这个序列肯定无法分成等和的两半。代码如下.

2021-10-28 07:53:36 170

原创 《剑指offer》面试题99:最小路径之和

题目:在一个m*n的格子中,每个位置上都有一个数字,一个机器人只会向下或向右,请计算它从左上角到达右下角的路径的数字之和的最小值。分析:和第98题一样,逻辑没那么复杂,死记硬背都可以,仍然用递归。代码如下:def dp(board,i,j): if i == 0: board[i][j] = sum(board[0][0:j+1]) return board[i][j] if j == 0: board[i][j] = sum(board[

2021-10-23 19:15:42 146

原创 《剑指offer》面试题98:路径的数目

题目:一个机器人从m*n个格子的左上角出发,它每步要么向右要么向下,直到抵达格子的右下角。请计算机器人从左上角到右下角的路径的数目。分析:这道题逻辑并不复杂,死记硬背都能过。仍然用递归,直接上代码:def dp(board,i,j): if i==0 or j == 0: board[i][j] = 1 else: board[i][j] = dp(board,i-1,j)+dp(board,i,j-1) return board[i][j]d

2021-10-23 17:25:21 166

原创 《剑指offer》面试题95:最长公共子序列(python实现)

题目:输入两个字符串,请求出它们的最长公共子序列长度。如果从字符串s1中删除若干字符之后能得到s2,那么字符串s2就是字符串s1的一个子序列。例如,从字符串’abcde‘中删除两个字符之后得到字符串’ace‘,因此‘ace’是字符串’abcde’的一个字符列。但字符串‘aec’不是字符串’abcde’的一个子序列。如果输入字符串’abcde’和’badfe’,那么它们的最长公共子序列是’bde’,因此输出3.分析:作者是用动态规划的思路写的,但是我觉得没必要用动态规划。以求字符串’abcde’和’ba

2021-10-23 09:47:37 143

原创 《剑指offer》面试题93:最长菲波那切数列(python实现)

"""题目:输入一个没有重复数字的单调递增的数组,数组中至少有3个数字,请问数组中最长的菲波那切数列的长度是多少?例如:输入[1,2,3,4,5,6,7,8],由于其中最长的菲波那切数列是1,2,3,5,8,因此输出5分析:设f(x,y)代表以nums[x],nums[y]为最大数和次大数的组合,然后往前看,是否存在一个元素等于nums[x]-nums[y],如果有一个元素(索引为z)满足这个条件,则f(x,y) = f(y,z)+=1。在递归过程中,对于f(x,y),1、如果y等于0,

2021-10-19 07:44:29 104

原创 《剑指offer》面试题91:粉刷房子(python实现)

"""题目:一排n幢房子需要粉刷成红色、绿色和蓝色,不同房子被粉刷成不同颜色的成本不同。用一个n*3的数组表示n幢房子分别用3种颜色粉刷的成本。要求任意相邻的两幢房子的颜色都不一样,请计算粉刷这n幢房子的最少成本。例如:粉刷3幢房子的成本分别为[[17, 2, 16],[15, 14, 5],[13, 3, 1]],那么分别将这3幢房子粉刷成绿、蓝、绿是最低成本,为10.分析:首先,摒弃这个故事,这道题就是给你1个数组,数组里有n个子数组,每个子数组里取一个值,要求相邻子数组的取值索引不能

2021-10-17 11:42:06 143

原创 《剑指offer》面试题90:环形房屋偷盗(python实现)

"""题目:一条环形街道上有若干房屋。输入一个数组表示某条街道上的一排房屋内的财产数量。如果这条街道上相邻的两幢房屋被盗就会触发报警系统, 请计算小偷在这条街道上个最多能偷多少财产。例如:街道上5家的财产用数组[2,3,4,5,3]表示,如果小偷傲下标1和3的房屋内盗窃,那么他能偷到价值为8的财物,这是他能偷到的最多的财物。分析:这道题我纯粹抄袭的作者的思路。就是把这个环,拆成两个单向的数组。 思路是这样的,当小偷去第n-2号房屋偷盗时,那他必然不能去第0号房屋偷盗。当去第n-1

2021-10-17 10:36:20 265

原创 《剑指offer》面试题89:房屋偷盗(python实现)

"""题目:输入一个数组表示某条街道上的一排房屋内的财产数量。如果这条街道上相邻的两幢房屋被盗就会触发报警系统,请计算小偷在这条街道上个最多能偷多少财产。例如:街道上5幢房屋内的财产用数组[2,3,4,5,3]表示,如果小偷到下标为0、2、4的房屋内盗窃,那么他能偷到价值为9的财物,这是他能偷到的最多的财物。分析:首先考虑递归关系,即元素间的推导关系。 假设站到第5个元素上,那么它的最大值,应该是max( dp(数组,备忘录,3), dp(数组,备忘录,2) ) + 数组[5]的值。

2021-10-17 09:53:09 214

原创 《剑指offer》面试题88:爬楼梯最少的成本(python实现)

"""题目:一个数组cost的所有数字都是整数,它的到底i个数字表示在一个楼梯的第i级台阶往上爬的成本,在支付了成本cost[i]后可以从第i级台阶往上爬1级或者2级。假设台阶至少有2级,既可以从第0级台阶出发,也可以从第1级台阶出发,请计算爬上台阶的最少成本。例如:输入数组[1,100,1,1,100,1],则爬上该楼梯的最少成本是4,分别经过下标为0、2、3、5的这4级台阶。分析:首先,动态规划题往往都出的是一个故事,比如偷东西、爬楼梯,这些我认为在思考问题时都应该摒弃掉,直接看问题的本质。

2021-10-17 09:20:16 260

原创 《剑指offer》面试题30:插入删除和随机访问都是O(1)的容器

"""题目:设计一个数据结构,使如下三个操作的时间复杂度都是O(1)。insert(value):如果数据集中不包含一个数值,则把它添加到数据集中。remove(value):如果数据中包含一个数值,则把它删除getRandom():随机返回数据集中的一个数值,要求数据集中每个数字被返回的概率都相同。解题思路:添加一个数据的时间复杂度为O(1)的数据结构有:链表、哈希表、列表删除一个数据的时间复杂度为O(1)的数据结构有:哈希表,列表删除最后一个元素的时间复杂度为O(1)返回一个随机数值

2021-09-12 21:32:06 260

转载 分享:使用Python构造链表

Python 数据结构之链表 - 木头人的文章 - 知乎https://zhuanlan.zhihu.com/p/60057180

2021-09-05 16:54:39 277

原创 《剑指offer》面试题20:回文子字符串的个数

"""题目:给定一个字符串,请问该字符串中有多少个回文连续子字符串?例如,字符串'ABC'有3个回文子字符串,分别为'A','B','C'; 而字符串‘AAA'有6个回文子字符串,分别为’A','A','A','AA','AA','AAA'解题思路:这个题上来一看,我的脑子里就把它翻译为求子字符串为回文的个数。 前面已经做了很多子数组或者子字符串的题了,那一定是要用到双指针了。核心逻辑就是如何移动双指针。 首先确定双指针的起始位置和方向: 如果按

2021-09-05 10:10:57 173

原创 《剑指offer》面试题19:最多删除一个字符得到回文

"""题目:给定一个字符串传,请判断如果最多从字符串中删除一个字符能不能得到一个回文字符串。 例如,如果输入字符串’ABCA‘,由于删除字符’B'或者‘C'就能得到一个回文字符串,因此输出为True解题思路:该题与第18题“有效的回文”类似,不同之处在于如果出现P1指针的值于P2指针的值不相同的情况,要进行尝试。 首先尝试P1侧删除一个字符能否形成回文,如果不行,则P1侧要恢复刚才删除的字符 然后尝试P2侧删除一个字符能否形成回文,如果不行,则可以return

2021-09-04 19:36:36 220

原创 《剑指offer》面试题18:有效的回文(此题中我用到了正则表达式,比作者的原答案简单一点)

"""题目:给定一个字符串,请判断它是不是回文。假设只需要考虑字母和数字字符,并忽略大小写。 回文,即从左到右,和从右到左的字符一样。如'Was it a cat I saw ?'就是一个回文。解题思路:如果忽略标点符号和空格,定义两个指针,一个从字符串的开始位置向右移动,一个从字符串的末尾向左移动,判断二者是否持续相等即可,直到P1==P2 双指针思路很关键,另外如何忽略掉字符串中的非数字和字母的字符也很关键。此处我用到了正则表达式,将原字符串进行过滤,只保留字母和数字。

2021-09-04 17:50:17 109

原创 《剑指offer》面试题17:不含重复字符的最长子字符串

"""题目:输入两个字符串t和s,请找出字符串t中包含字符串s的所有字符的最短字符串。 例如,输入字符串t为‘ADDBANCAD',字符串s为’ABC',则字符串t中包含字符'A','B'和‘C'的最短字符串为’BANC' 如果不存在符合条件的字符串,则返回字符串为空字符串。如果存在多个符合条件的子字符串,则返回任意一个解答思路:该题与第16题的核心考点一样,即如何截取符合条件的最短字符串。即使用双指针从左开始,P2先移动,然后到达某个条件后,P1再移动。 在此题里,

2021-09-04 16:46:55 94

原创 《剑指offer》面试题16:不含重复字符的最长子字符串

"""题目:输入一个字符串,求该字符串中不含重复字符的最长子字符串的长度。 例如,输入字符串’babcca',其最长的不含重复字符的子字符串是‘abc’,长度为3解题思路:解该题的核心思想是,如何通过恰当的双指针移动来截取子字符串。至于子字符串中是否包含重复字符这都很好判断。 如何恰当的通过双指针截取子字符串呢?P1的起始位置为0,P2的起始位置为1. 首先判断P1-P2是否有重复字符,如果没有,则持续右移P2,并使用列表T1记录下每个无重复字符的子字符串的长度

2021-09-04 13:27:52 107

原创 《剑指offer》面试题15:字符串中的所有变位词

"""题目: 输入字符串S1和S2,如何找出字符串S1的所有变位词在字符串S2中的歧视下标?解答思路: 这个题就是“字符串中的变位词”的轻微变种,无非就是在判断出是变为词后,把它的位置记录下来就行了。"""def has_brother(s1, s2): s1_length = len(s1) max_k = len(s2) - s1_length + 1 location_list = [] for k in range(max_k): s1_co

2021-09-04 11:26:59 107

原创 《剑指offer》面试题14:字符串中的变位词

"""题目:输入字符串S1和S2,如何判断字符串S2中是否包含字符串S1的变位词? 变位词又称兄弟词,即两个字符串的字母、个数一模一样,如'pots','stop','tops'相互就是变位词作者解答思路:书上包括网上,都是用一个26个字母的哈希表去记录每个字母出现的次数,key为字母,value为这个字母出现的次数。value默认为0 然后遍历S1,将哈希表中S1中出现的字母的value修改为它们出现的次数(我把这步成为哈希表初始化), 然后使用双指针截取S2

2021-09-04 10:50:17 115

原创 《剑指offer》面试题13:二维子矩阵的数字之和

“”"题目:输入一个二维矩阵,如何计算给定左上角坐标和右下角坐标的子矩阵之和?例如输入下面的二维矩阵,以及左上角坐标为(2,1)和右下角坐标为(4,3)的子矩阵,该函数输出8解答思路:书上的答案还是繁琐,可能是因为使用Java的原因吧,对于python而言,将数组的每行视为一个子列表,然后使用列表切片功能,对每个子列表切片求和即可“”"t = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],[1, 2, 0, 1, 5],[4, 1, 0, 1, 7],[1, 0,

2021-09-04 08:59:24 145

原创 《剑指offer》面试题12:左右两边子数组的和相等

"""题目:输入一个整数数组,如果一个数字左边的子数组之和等于右边的字数组之和,那么返回该数字的下标。如果存在多个这样的数字,则返回最左边数字的下标。 如果不存在这样的数字,则返回-1.例如数组[1, 7, 3, 6, 2, 9]中,数字6左边的3个数字1、7、3的和与右边的2个数字2、9的和相等, 因此输出数字6的下标3解答思路:我的直觉思路是逐个扫描元素,然后使用切片求它两边的和。但是书上有更好的方法,即元素右边的子数组得到和等于数组总和减去左边子数组的和以及 该

2021-09-04 08:10:40 204

原创 如何关闭Chrome(谷歌浏览器)自动打开pdf文档的功能

Chrome功能强大,阅读PDF再也不用下载那个难用的adobe了,可是我想把网上的pdf文档下载到本地分析,就发现用chrome不行了,在网上都了一些,都是老版本的Chrome的设置,针对最新的91.0的版本,我自己摸索到了方法:第一步,在Chrome设置界面输入pdf搜索,点击网站设置第二步,网站设置界面往最下面拉,找到“更多内容设置”并点击第三步,找到“PDF文档”并点击第四步 ,把开关打开...

2021-06-16 23:17:31 9727 1

原创 python使用狄克斯特拉算法,实现带有权重的最优路径的选择

如上图,要找到从A点到D点,最便宜的路径。代码如下:from collections import deque# 定义children表,用来记录每个节点的孩子节点是谁children = dict()children['a'] = ['b', 'e']children['b'] = ['c', 'f']children['e'] = ['c', 'f']children['c'] = ['d']children['f'] = ['d']children['d'] = []# 定.

2021-05-11 22:33:31 629 1

原创 python实现BFS算法(广度优先搜索)输出最短路径

看到网上很多代码,使用BFS算法仅实现从起点能否到达终点的问题,却不输出从起点到终点的最短路径。我决定实现它!实现的原理:在传统BFS算法的基础上,多维护一个表,用来记录每个点的父节点是谁,然后在找到终点后,根据父节点表,来倒推路径。路径图如下:这个是网上的从双子峰(图中a点)到金门大桥(图中g点)的路。实现代码如下:from collections import deque# maps表用来记录各个节点的子节点maps = dict()maps['a'] = ['b', 'c']map

2021-05-08 23:51:10 6788 7

原创 selenium+python之窗口管理

本文目标:使用selenium实现对窗口的放大缩小预置条件:selenium已能打开网页1)获取窗口的尺寸x = driver.get_window_position().get(‘x’)y = driver.get_window_position().get(‘y’)2)设置窗口位置,这个操作可以实现浏览器窗口的拖动driver.set_window_position(100, 100)3)最大化窗口driver.maximize_window()4)最小化窗口driver.minim

2021-02-03 22:54:36 322

原创 selenium+python之切换窗口

本文目标:使用selenium操作浏览器打开的新窗口,在新窗口上点击任意元素预置条件:selenium已能控制浏览器打开selenium是通过控制浏览器每个窗口的句柄来实现对每个窗口的控制的。首先,先获取当前所有窗口的句柄。所有的句柄存在window_handles这个属性里(这个属性是一个列表):`from selenium.webdriver import Chromefrom time import sleepwith Chrome() as driver: '''使用上下文管理器

2021-02-03 22:31:27 591 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除