Leetcode
fighting!
菜鸟教程*…*
这个作者很懒,什么都没留下…
展开
-
[leetcode]111.二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在[0, 105]内 -1000 <= Node.val <= 1000递归解法# Defini...原创 2021-11-03 11:12:56 · 94 阅读 · 0 评论 -
[leetcode]15.三数之和
给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <= nums....原创 2021-11-01 20:41:04 · 80 阅读 · 0 评论 -
剑指offer58-||.左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出:"cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出:"umghlrlose"限制:1 <= k < s.length <= 10000...原创 2021-11-01 18:02:59 · 86 阅读 · 0 评论 -
[leetcode]151.翻转字符串里的单词
给你一个字符串 s ,逐个翻转字符串中的所有 单词 。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。说明:输入字符串 s 可以在前面、后面或者单词间包含多余的空格。 翻转后单词间应当仅用一个空格分隔。 翻转后的字符串中不应包含额外的空格。示例 1:输入:s = "the sky is blue"输出:"blue is sky the"示例 2:输入:s = " h.原创 2021-11-01 17:11:39 · 92 阅读 · 0 评论 -
剑指offer 05.替换空格
请实现一个函数,把字符串s中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000双指针class Solution: def replaceSpace(self, s: str) -> str: counter=s.count(' ') res=list(s) res.app...原创 2021-11-01 16:14:59 · 81 阅读 · 0 评论 -
[leetcode]541.反转字符串||
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例 1:输入:s = "abcdefg", k = 2输出:"bacdfeg"示例 2:输入:s = "abcd", k = 2输出:"bacd"提示:1 <= s.length <= 104 s.原创 2021-11-01 15:05:35 · 78 阅读 · 0 评论 -
[leetcode]344.反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1:输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:s = ["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]提示:1 <= s.length &.原创 2021-11-01 14:41:01 · 165 阅读 · 0 评论 -
[leetcode]27.移除元素
给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任何...原创 2021-11-01 10:01:24 · 104 阅读 · 0 评论 -
[leetcode]26.删除有序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDupli原创 2021-11-01 09:28:38 · 81 阅读 · 0 评论 -
[leetcode]110.平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root = []输出:true提示:树中的节点数在范围[0, 50...原创 2021-10-25 09:19:03 · 91 阅读 · 0 评论 -
Numpy&Pandas的区别和联系
一、Numpynumpy是以矩阵为基础的数学计算模块,提供高性能的矩阵运算,数组结构为ndarray。首先需要明确数组与列表的区别:数组是一种特殊变量,虽与列表相似,但列表可以存储任意类型的数据,数组只能存储一种类型的数据,同时,数组提供了许多方便统计计算的功能(如平均值mean、标准差std等)。那么numpy有哪些功能呢?首先在使用前要导入该模块(导入前要安装,方法自行搜索吧(*^-^*)),代码如下:import numpy as np1. 通过原有列表转化为数组...原创 2021-10-23 13:54:32 · 10891 阅读 · 1 评论 -
[106].从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=...原创 2021-10-21 20:05:28 · 83 阅读 · 0 评论 -
[leetcode]617.合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 1 2 ...原创 2021-10-21 11:10:32 · 86 阅读 · 0 评论 -
[leetcode]19.删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <...原创 2021-10-20 19:45:51 · 66 阅读 · 0 评论 -
[leetcode]83.删除排序链表中的重复元素
存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。返回同样按升序排列的结果链表。示例 1:输入:head = [1,1,2]输出:[1,2]示例 2:输入:head = [1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围 [0, 300] 内 -100 <= Node.val <= 100 题目数据保证链表已经按升序排列解法1:一次遍历class Solution:...原创 2021-10-20 19:37:28 · 69 阅读 · 0 评论 -
[leetcode]160.相交链表
给你两个单链表的头节点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 '8'.原创 2021-10-20 18:47:02 · 79 阅读 · 0 评论 -
[leetcode]剑指offer32-1.从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回:[3,9,20,15,7]提示:1.节点总数 <= 1000深度优先搜索# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x#原创 2021-10-18 18:57:57 · 73 阅读 · 0 评论 -
剑指 Offer 39. 数组中出现次数超过一半的数字
原题数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000方法1.摩尔投票法class Solution: def majorityElement(self, nums: List[int]) -> int: counter = 0 .原创 2021-10-12 09:14:39 · 75 阅读 · 0 评论 -
226.翻转二叉树
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1class Solution: def invertTree(self, root: TreeNode) -> TreeNode: if not root: return root ro原创 2021-10-04 13:29:02 · 108 阅读 · 0 评论 -
判断列表是否有序
解法一判断列表是否有序class Solution: def isAscSorted(self, nums): n = len(nums) # for i in range(n - 1): # if nums[i] <= nums[i + 1]: # continue # else: # return False i = 0原创 2021-09-30 23:53:20 · 902 阅读 · 0 评论 -
[leetcode]106.从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7class Solution: def buildTree(self, inorder: List[int], postorder: List[int]) -> T.原创 2021-09-29 21:51:51 · 107 阅读 · 0 评论 -
[leetcode] 105.从前序与中序遍历构造二叉树
给定一棵树的前序遍历preorder与中序遍历inorder。请构造二叉树并返回其根节点。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]提示:1 <= preorder.length <= 300...原创 2021-09-29 21:18:46 · 92 阅读 · 0 评论 -
[leetcode] 912.排序数组
给你一个整数数组nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 50000 -50000 <= nums[i] <= 50000class Solution: def sortArray(self, nums: List[int]) -> Li.原创 2021-09-29 17:59:50 · 83 阅读 · 0 评论 -
[leetcode] 72.编辑距离
给你两个单词word1和word2,请你计算出将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符 删除一个字符 替换一个字符示例1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删除 'r')rose -> ros (删除 'e')示例2:输入:word1 = "int...原创 2021-09-28 19:00:15 · 157 阅读 · 0 评论 -
[leetcode]236.二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。示例 2:输入:root = [3,5,1,..原创 2021-09-28 17:13:18 · 85 阅读 · 0 评论 -
[leetcode]112.路径总和
给你二叉树的根节点root 和一个表示目标和的整数targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和targetSum 。叶子节点是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true示例 2:输入:root = [1,2,3], targetSum = 5输出:false示例 3:...原创 2021-09-28 16:52:23 · 80 阅读 · 0 评论 -
[leetcode]101.对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?1.递归class Solution: def isSymmetric(self, ro...原创 2021-09-28 16:16:51 · 81 阅读 · 0 评论 -
[leetcode]104.二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。1.递归法class Solution: def maxDepth(self, root: TreeNode) -> int: if root==None..原创 2021-09-28 16:02:59 · 91 阅读 · 0 评论 -
[leetcode]102.二叉树的层序遍历
给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: ..原创 2021-09-28 12:14:06 · 87 阅读 · 0 评论 -
[leetcode]145.二叉树的后序遍历
给定一个二叉树,返回它的后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶:递归算法很简单,你可以通过迭代算法完成吗?1.递归解法class Solution: def postorderTraversal(self, root: TreeNode) -> List[int]: self.res = [] self.dfs(root) ...原创 2021-09-28 11:11:17 · 88 阅读 · 0 评论 -
[leetcode]94.二叉树的中序遍历
给定一个二叉树的根节点root,返回它的中序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围[0, 100]内 -100 &l...原创 2021-09-28 12:00:17 · 84 阅读 · 0 评论 -
[leetcode] 144.二叉树的前序遍历
给你二叉树的根节点root,返回它节点值的前序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围[0, 100]内 -100 &l...原创 2021-09-28 10:29:05 · 88 阅读 · 0 评论 -
剑指 Offer 29. 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix =[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]class Solution: def spiralOrder(self, matrix: List[List[int].原创 2021-09-20 19:51:31 · 81 阅读 · 0 评论 -
[leetcode] 21.合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]思路:建立一个空的链表,通过传值的形式,把小的值传入到新链表里。class Solution(object): def mergeT...原创 2021-09-01 10:30:13 · 104 阅读 · 0 评论 -
[leetcode] 160.相交链表
给你两个单链表的头节点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 ...原创 2021-08-31 09:15:08 · 159 阅读 · 0 评论 -
[leetcode] 141.环形链表
给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [.原创 2021-08-29 19:45:13 · 86 阅读 · 0 评论 -
[leetcode] 206.反转链表
给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# ...原创 2021-08-29 19:36:33 · 87 阅读 · 0 评论 -
[leetcode] 154.寻找旋转排序数组中的最小值 II
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。给你一个可能存在重复元素值的数..原创 2021-08-27 12:53:56 · 175 阅读 · 0 评论 -
[leetcode] 704.二分查找
给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入:nums=[-1,0,3,5,9,12], target=9 输出:4解释:9出现在nums中并且下标为4示例2:输入:nums=[-1,0,3,5,9,12],target=2输出:-1解释:2不存在nums中因此返回-1class Solution: def search(se...原创 2021-08-27 12:40:18 · 97 阅读 · 0 评论 -
[leetcode] 5.最长回文子串
给你一个字符串s,找到s中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"class Solution: def longestPalindrome(self,s:int)->str: size = len(s) ...原创 2021-08-24 21:44:55 · 80 阅读 · 0 评论