
Python学习
淡 默
游戏,最大的害人之处是:你在快乐的浪费时间,丝毫感觉不到浪费的危害。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode 面试题 02.07. 链表相交
给你两个单链表的头节点headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Intersected at ..原创 2021-10-14 23:17:34 · 251 阅读 · 0 评论 -
LeetCode 面试题 02.02. 返回倒数第 k 个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci解题思路:看到这道题第一个想法就是将所有的节点的值都用列表存储起来,然后再返回倒数第K个数,这个思路比较简单直接;后面看了别人的解题思路可原创 2021-10-12 22:29:44 · 279 阅读 · 0 评论 -
LeetCode 275.H指数 II
给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照升序排列。编写一个方法,计算出研究者的 h 指数。h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。(其余的N - h篇论文每篇被引用次数不多于 h 次。)"示例:输入: citations = [0,1,3,5,6]输出: 3解释: 给定数组表示研究者总共有 5 篇论文,每篇论文相...原创 2021-07-13 00:06:17 · 275 阅读 · 0 评论 -
LeetCode 5793.迷宫中入口最近的出口
给你一个m x n的迷宫矩阵maze(下标从 0 开始),矩阵中有空格子(用'.'表示)和墙(用'+'表示)。同时给你迷宫的入口entrance,用entrance = [entrancerow, entrancecol]表示你一开始所在格子的行和列。每一步操作,你可以往 上,下,左 或者 右移动一个格子。你不能进入墙所在的格子,你也不能离开迷宫。你的目标是找到离entrance最近的出口。出口的含义是maze边界上的空格子。entrance格子不算出口。...原创 2021-07-11 23:27:11 · 499 阅读 · 2 评论 -
LeetCode 402.移掉K位数字
给你一个以字符串表示的非负整数num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。示例 1 :输入:num = "1432219", k = 3输出:"1219"解释:移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219 。示例 2 :输入:num = "10200", k = 1输出:"200"解释:移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。示例 3 :输入:num = "1..原创 2021-07-02 23:57:45 · 382 阅读 · 2 评论 -
LeetCode 340.至多包含K个不同字符的最长子串T
给定一个字符串 s ,找出至多包含 k 个不同字符的最长子串 T。示例 1:输入: s = "eceba", k = 2输出: 3解释: 则 T 为 "ece",所以长度为 3。示例 2:输入: s = "aa", k = 1输出: 2解释: 则 T 为 "aa",所以长度为 2。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-with-at-most-k-distinct-charac..原创 2021-06-23 15:32:15 · 423 阅读 · 0 评论 -
LeetCode 3.无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pw...原创 2021-06-20 23:06:15 · 171 阅读 · 1 评论 -
LeetCode 200.岛屿数量
给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:grid = [...原创 2021-06-16 11:17:12 · 296 阅读 · 0 评论 -
LeetCode 684.冗余连接
在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v],满足u < v,表示连接顶点u和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边[u, v] 应满足相同的格式u < ...原创 2021-06-15 16:29:34 · 214 阅读 · 0 评论 -
LeetCode 84.柱状图中最大的矩形
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-recta...原创 2021-06-12 17:44:35 · 178 阅读 · 0 评论 -
LeetCode.901 股票价格跨度
编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。示例:输入:["StockSpanner","next","next","next","next","next","next","next"],.原创 2021-06-03 17:37:04 · 266 阅读 · 0 评论 -
LeetCode.739 每日温度
请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用0 来代替。例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是[1, 30000]。每个气温的值的均为华氏度,都是在[30, 100]范围内的整数。来源:力扣(LeetCode)链接:ht...原创 2021-06-01 20:52:42 · 125 阅读 · 0 评论 -
LeetCode 695.岛屿的最大面积
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/max-area-of-island给定一个包含了一些 0 和 1 的非空二维数组grid 。一个岛屿是由一些相邻的1(代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,...原创 2020-11-14 17:25:16 · 174 阅读 · 0 评论 -
LeetCode 54.螺旋矩阵
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/spiral-matrix给定一个包含m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11...原创 2020-11-10 19:51:17 · 176 阅读 · 0 评论 -
Python获取集合中最大或者最小的N个元素
Python中有一个模块heapq,模块中有两个函数:nlargest()和nsmallest(),具体用法如下:nums = ['abc', 'def', 'g', 'h', 'j']max_n = heapq.nlargest(3, nums)min_n = heapq.nsmallest(2, nums)print(max_n) # prints['j', 'h', 'g']print(min_n) # prints['abc', 'def']nums = [8, 1, 2, 3,原创 2020-11-05 17:53:07 · 645 阅读 · 0 评论 -
LeetCode 46.全排列
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题思路:首先注意到题目中给定的是没有重复数字的序列,所以我们可以每次都选择序列的第一个数字,然后进行回溯直到序列中没有数据,但是因为py...原创 2020-11-03 20:16:31 · 911 阅读 · 0 评论 -
二叉树的前序、中序、后序三种遍历算法
首先简单介绍一下这三种遍历算法的主要思想:前序遍历:根节点——左子树——右子树中序遍历:左子树——根节点——右子树后序遍历:左子树——右子树——根节点接下来分递归和非递归两种方式来介绍这三种遍历算法,对于前序遍历有:递归算法:class Solution: def preorderTraversal(self, root: TreeNode) -> List[int]: ans = [] self.iteration(root, ans原创 2020-09-07 21:50:20 · 1483 阅读 · 0 评论 -
python类的方法的装饰
当类的方法不需要访问实例时,根据具体场景选择使用@staticmethod或者是@classmethod进行装饰。Python中一般的类方法要接收一个self参数表示此类的实例,但是有些方法不需要访问实例,这分为两种情况:1.方法不需要访问任何成员,或者只需要显式访问这个类自己的成员,这样的方法不需要额外的参数,应当用@staticmethod装饰。在Python3.X版本中,允许直接定义不含self参数的方法,并且允许不通过实例调用。但是一旦通过实例调用这个方法,就会因为参数不匹配而出错。加上@sta原创 2020-08-24 20:53:10 · 532 阅读 · 0 评论 -
LeetCode 127. 单词接龙
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/word-ladder给定两个单词(beginWord和 endWord)和一个字典,找到从beginWord 到endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWo...原创 2020-08-19 20:14:17 · 281 阅读 · 0 评论 -
LeetCode 696. 计数二进制子串
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-binary-substrings给定一个字符串s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: "00110011"输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,.原创 2020-08-11 20:15:16 · 172 阅读 · 0 评论 -
LeetCode 337. 打家劫舍 III
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/house-robber-iii在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例原创 2020-08-06 20:42:52 · 142 阅读 · 0 评论 -
LeetCode 113. 路径总和 II
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-sum-ii给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2020-08-01 11:26:58 · 271 阅读 · 0 评论 -
LeetCode 112. 路径总和
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-sum给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 ...原创 2020-08-01 10:17:20 · 109 阅读 · 0 评论 -
Leetcode 110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例 2:给定二叉树[1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 ...原创 2020-07-31 10:18:56 · 132 阅读 · 0 评论 -
python命名规范
命名规范推荐表:Type Public Internal Modules lower_with_under _lower_with_under Packages lower_with_under Classes CapWords Exceptions CapWords Functions lower_with_under() _lower_with_under() Global/Class Con...原创 2020-07-30 19:45:12 · 578 阅读 · 0 评论 -
LeetCode20. 有效的括号
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出:...原创 2020-07-25 19:25:53 · 108 阅读 · 0 评论 -
Leetcode19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.解题思路:比较直观的思路就是将整个链表遍历并将结果加入到列表中,接着计算列表长度找到倒数第n个节点,并将其前一节点的指针指向该节点的后面一个,就可以了。运用这种思路需要注意链表的长度和n的取值,当n为最后一个或者第一个节点的时候情况比较特殊需要进行专门的处理,A..原创 2020-07-25 16:51:59 · 124 阅读 · 0 评论 -
Python内置的异常类
学习Python时有一些内置的异常类,在此处记录一下:类名 描述Exception 几乎所有的异常类都是从它派生而来的AttributeError ...原创 2020-07-18 19:22:53 · 372 阅读 · 0 评论 -
OJ——39. 24点游戏
大家都玩过扑克牌(A,2,3…T,J,Q,K),我们使用T来表示10,且A取值1,J取值11,Q取值12,K取值13,你的任务是判断给定四张牌,能否通过加减乘除四种运算,使得最后的结果是24。若四张牌为A、5、8、J,则可以这么计算5+J+(A*8)=24。解答要求时间限制:5000ms, 内存限制:64MB输入输入四个字符表示四张牌(A,2,3…T,J,Q,K),用空格隔开。输入到文件末尾结束。输出若能计算出24,输出"Yes”,否则输出"No"。样例输入样例 1复制.原创 2020-07-18 15:11:45 · 2132 阅读 · 0 评论 -
python实现二分查找
学到递归算法来记录一下二分查找的递归算法的实现:def search(sequence, number, lower, upper): if upper is None: upper = len(sequence) - 1 if lower == upper: assert number == sequence[upper] return upper else: middle = (lower + upper)原创 2020-07-17 12:06:37 · 266 阅读 · 0 评论 -
OJ——25. Red And Green
题目描述在美丽的尧山,有一个大广场,50周年校庆的时候Solo就在大广场上见证了史上最壮观的焰火。在广场上有一排方砖是有颜色的,被涂上红色或者绿色,从左到右排列。现在校方要求重新喷涂颜色,但不一定要每一块方砖都重新喷涂,因为校方的目的是:每一块红色的方砖都至少在绿色方砖的左边(也就是每一个红的左边不能有绿的),并且尽量喷涂最少的次数。解答要求时间限制:1000ms, 内存限制:64MB输入输入只有一行,包含一个字符串S,且只包含'R'(代表红色)或者'G'(代表绿色)。我们保证字符串S的原创 2020-07-13 17:33:43 · 2403 阅读 · 0 评论 -
Python收集参数
在Python中有时候需要允许用户提供任意数量的参数,为了实现这个功能,我们可以再函数参数前面添加一个*号,这样就可以接受多个函数的参数了。示例如下:def main(*params): print(params)if __name__ == '__main__': main('test') main(1, 2, 3, 4) main()上面代码输出结果如下:('test',)(1, 2, 3, 4)()因此参数前面的*号意味着手机多余的位置参数,原创 2020-07-12 16:50:19 · 588 阅读 · 0 评论 -
Python中的简单推导
Python中的列表推导是一种从其他列表创建列表的方式,类似于数学中的集合推导。举个简单例子:lists = [x * x for x in range(10)]其结果如下:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]它的计算结果和我们使用以下代码的计算结果相同:for num in range(10): list2.append(num * num)此外我们还可以通过推导实现更多复杂的功能,示例如下:list1 = ['a', '原创 2020-07-11 23:44:46 · 204 阅读 · 0 评论 -
OJ题——11. Olympic Game
题目描述2012伦敦奥运会即将到来,大家都非常关注奖牌榜的情况,现在我们假设奖牌榜的排名规则如下:1、首先gold medal数量多的排在前面; 2、其次silver medal数量多的排在前面; 3、然后bronze medal数量多的排在前面; 4、若以上三个条件仍无法区分名次,则以国家名称的字典序排定。我们假设国家名称不超过20个字符、各种奖牌数不超过100,且大于等于0。解答要求时间限制:1000ms, 内存限制:64MB输入第一行输入一个整数N(0<N<21原创 2020-07-10 09:37:25 · 3217 阅读 · 0 评论 -
Python中的 a,b=b,a+b 和 a=b b=a+b 的区别
此处要注意赋值语句的运算优先级,赋值语句首先计算右边的表达式的值,然后将它赋值给左边的表达式。在a,b=b,a+b中,首先将b和a+b的值都计算出来,然后在赋值给左边的a和b。它的比较经典的应用就是在计算斐波那契数列的时候,我们可以采用这种方式计算,示例如下:a, b = 0, 1for _ in range(20): a, b = b, a + b print(a, ...原创 2020-03-03 17:07:33 · 1093 阅读 · 0 评论 -
Python中的四种数据类型
list:列表是最常用的Python数据类型,它的数据项不需要具有相同的数据类型,创建一个列表只需要用逗号把不同的数据项使用方括号括起来即可,如下所示:list1 = ['zhang', 'wang', 1, 2, 3]list2 = [1, 2, 3, 4, 5]list3 = ["zhang", "wang", "liu"]常用方法:添加元素:list1.appe...原创 2019-07-12 17:27:18 · 657 阅读 · 0 评论 -
Python函数中的默认参数
# -*- coding: utf-8 -*-def hello(greeting='hello', name='world!'): print '%s,%s' % (greeting, name)hello()hello('I like you')def hello1(name, greeting='hello', punctuation='!'): print '%s...原创 2018-10-26 13:52:27 · 168 阅读 · 0 评论 -
Python循环中的else字句
在循环中使用break语句时,通常是自己设定的某件事发生了,但是如果在循环结束时设定的事件没有发生而我们希望对这种情况进行判断,在Python中可以用一下的方法:from math import sqrtfor n in range(99,81,-1): root = sqrt(n) if root == int(root) ...原创 2018-10-26 13:38:51 · 396 阅读 · 0 评论