自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 186

原创 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 163

原创 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 177

原创 LeetCode 5793.迷宫中入口最近的出口

给你一个m x n的迷宫矩阵maze(下标从 0 开始),矩阵中有空格子(用'.'表示)和墙(用'+'表示)。同时给你迷宫的入口entrance,用entrance = [entrancerow, entrancecol]表示你一开始所在格子的行和列。每一步操作,你可以往 上,下,左 或者 右移动一个格子。你不能进入墙所在的格子,你也不能离开迷宫。你的目标是找到离entrance最近的出口。出口的含义是maze边界上的空格子。entrance格子不算出口。...

2021-07-11 23:27:11 393 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 245 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 284

原创 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 103 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 198

原创 LeetCode 684.冗余连接

在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v],满足u < v,表示连接顶点u和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边[u, v] 应满足相同的格式u < ...

2021-06-15 16:29:34 89

原创 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 108

原创 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 154

原创 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 72

原创 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 105

原创 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 123

原创 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 550

原创 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 787

原创 LeetCode 93.复原IP地址

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/restore-ip-addresses给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导0),整数之间用'.'分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是有效的IP 地址,但是 "0.011.255.245"、"192.168.1.312"...

2020-10-26 20:56:37 82

原创 LeetCode 221.最大正方形

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximal-square在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4解题思路:看到这道题我的第一个想法是首先将所有的1和0进行分割,划分成为不同的堆,其中1和1之间只要有相连就划分为一个堆(相连表示在水平或者垂直方向是相连的),然后再在1.

2020-10-21 20:03:28 104

原创 LeetCode 55.跳跃游戏

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/jump-game给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例2:输入: [3,2,1,0,4]输出: fal...

2020-10-21 19:17:26 55

原创 Git分支管理

Git分支的新建与合并:新建分支:当我们想要在当前分支上新建一个分支去进行其他开发时,我们可以使用以下命令:git checkout -b 分支名这条命令是下面两条命令的简写:git branch 分支名git checkout 分支名分支切换和删除:分支切换:git switch 分支名删除分支:git branch -d 分支名合并分支:在合并分支之前,首先我们要切换分支到你准备将工作合并到的那个分支上,然后再进行合并;合并命令如下:git merg.

2020-10-14 11:41:12 90

原创 Git撤销操作

在使用Git的过程中,我们可能想要撤销某些操作,在不同的阶段撤销的命令有所区别。撤销暂存的文件:当我们使用git add命令将文件添加到暂存区域后,想要取消添加的文件,操作的命令如下:git reset HEAD 文件名撤销对文件的修改:当我们对文件进行修改后(还没有提交到暂存区)不想保留对它的修改,想将他还原成上次提交时的样子,操作的命令如下:git checkout -- 文件名撤销commit提交:当我们将文件添加到暂存区域并使用git commit命令提交到Git仓库

2020-10-13 18:08:10 181

原创 git移除文件

使用Git添加修改文件到暂存区比较常见,但是将文件从暂存区域移除就比较少见了,在此分享一下Git如何移除文件。要从Git中移除某个文件,就必须要从暂存区域移除,然后提交。如果我们想把文件从暂存区域中移除但是希望它仍然保留在当前的工作目录中,也就是说让文件继续留在磁盘但是不想让Git继续跟踪。此时可以采用以下方法:git rm --cached 文件名...

2020-10-13 16:51:59 640

原创 二叉树的前序、中序、后序三种遍历算法

首先简单介绍一下这三种遍历算法的主要思想:前序遍历:根节点——左子树——右子树中序遍历:左子树——根节点——右子树后序遍历:左子树——右子树——根节点接下来分递归和非递归两种方式来介绍这三种遍历算法,对于前序遍历有:递归算法:class Solution: def preorderTraversal(self, root: TreeNode) -> List[int]: ans = [] self.iteration(root, ans

2020-09-07 21:50:20 1369

原创 python类的方法的装饰

当类的方法不需要访问实例时,根据具体场景选择使用@staticmethod或者是@classmethod进行装饰。Python中一般的类方法要接收一个self参数表示此类的实例,但是有些方法不需要访问实例,这分为两种情况:1.方法不需要访问任何成员,或者只需要显式访问这个类自己的成员,这样的方法不需要额外的参数,应当用@staticmethod装饰。在Python3.X版本中,允许直接定义不含self参数的方法,并且允许不通过实例调用。但是一旦通过实例调用这个方法,就会因为参数不匹配而出错。加上@sta

2020-08-24 20:53:10 466

原创 LeetCode 127. 单词接龙

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/word-ladder给定两个单词(beginWord和 endWord)和一个字典,找到从beginWord 到endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWo...

2020-08-19 20:14:17 233

原创 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 132

原创 LeetCode 337. 打家劫舍 III

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/house-robber-iii在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例

2020-08-06 20:42:52 92

原创 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 144

原创 LeetCode 112. 路径总和

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-sum给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 ...

2020-08-01 10:17:20 69

原创 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 85

原创 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 467

原创 Linux软件安装目录惯例

使用过windows系统的人都有过安装各种软件的经历,对不同用处的软件它的安装位置会有较大的区别,而在Linux中也是如此,良好的软件安装目录会给后期维护带来很大的便利,下面简单介绍一些Linux下安装软件的基本知识。/usr 系统级的目录,可以将其理解为 C:/Windows//usr/lib 可以理解为 C:/WIndows/System32/usr/src 系统级的源码目录/usr/local/src 用户级的源码目录/usr/local 用户级的程序目录,可以理解为 C:/Pro

2020-07-28 11:36:19 75

原创 LeetCode20. 有效的括号

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出:...

2020-07-25 19:25:53 75

原创 Leetcode19. 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.解题思路:比较直观的思路就是将整个链表遍历并将结果加入到列表中,接着计算列表长度找到倒数第n个节点,并将其前一节点的指针指向该节点的后面一个,就可以了。运用这种思路需要注意链表的长度和n的取值,当n为最后一个或者第一个节点的时候情况比较特殊需要进行专门的处理,A..

2020-07-25 16:51:59 85

原创 Python内置的异常类

学习Python时有一些内置的异常类,在此处记录一下:类名 描述Exception 几乎所有的异常类都是从它派生而来的AttributeError ...

2020-07-18 19:22:53 280

原创 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 1714

原创 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 208

原创 OJ——25. Red And Green

题目描述在美丽的尧山,有一个大广场,50周年校庆的时候Solo就在大广场上见证了史上最壮观的焰火。在广场上有一排方砖是有颜色的,被涂上红色或者绿色,从左到右排列。现在校方要求重新喷涂颜色,但不一定要每一块方砖都重新喷涂,因为校方的目的是:每一块红色的方砖都至少在绿色方砖的左边(也就是每一个红的左边不能有绿的),并且尽量喷涂最少的次数。解答要求时间限制:1000ms, 内存限制:64MB输入输入只有一行,包含一个字符串S,且只包含'R'(代表红色)或者'G'(代表绿色)。我们保证字符串S的

2020-07-13 17:33:43 2078

原创 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 496

原创 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 138

空空如也

空空如也

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

TA关注的人

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