leetcode
liiiiiiiiiiiiike
这个作者很懒,什么都没留下…
展开
-
【leetcode】331. 验证二叉树的前序序列化
331. 验证二叉树的前序序列化原创 2022-06-26 14:59:24 · 1796 阅读 · 0 评论 -
【leetcode】701. 二叉搜索树中的插入操作
701. 二叉搜索树中的插入操作原创 2022-06-26 11:19:22 · 172 阅读 · 0 评论 -
【leetcode】48.旋转图像
题目详见 48.旋转图像解题思路:原地旋转图像,不能使用另外一个矩阵来旋转图像首先将图像水平翻转,第一行和倒数第一行交换,第二行和倒数第二行交换,依次类推其次沿着对角线翻转class Solution: def rotate(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """原创 2022-05-23 20:28:39 · 152 阅读 · 0 评论 -
【leetcode】112. 路径总和 - 113. 路径总和 II
题目详见112. 路径总和题目详见 113. 路径总和 II112.路径总和解题思路:先序遍历,如果递归中root 为空,就返回False表示该路径下没有和为TargetSum如果左右子树都为空,并且当前节点等于targetSum,就返回True然后递归左右子树,看左右子树是否能被匹配到talk is cheap , show me the code# Definition for a binary tree node.# class TreeNode:# def __ini原创 2022-05-22 13:09:16 · 141 阅读 · 0 评论 -
python heapq和accumulate
主要为了刷题时候,总是出现堆和前缀和等python内置库,做个记录1 heapq heapq 库是Python标准库之一,提供了构建小顶堆的方法和一些对小顶堆的基本操作方法(如入堆,出堆等),可以用于实现堆排序算法。堆是一种数据结构,是一颗完全二叉树,满足的性质:每个节点的值都大于等于(小于等于)它的左右子节点的值。在python heapq中使用的是小顶堆。 在heapq库中,heapq使用的数据类型是python的基本数据类型list,要满足堆的性质,则在索引k的值要<= 2k+1 和原创 2022-05-21 20:18:50 · 307 阅读 · 0 评论 -
【leetcode】python尾插创建链表
核心代码写多了,都不知道链表怎么写测试用例# python 尾插法创建链表class LinkNode(object): def __init__(self,val=0,next = None): self.val = val self.next = nextdef createList(nums): dummy_head = LinkNode() p = dummy_head for item in nums: node = LinkNode(val = item)原创 2022-04-19 20:25:04 · 180 阅读 · 0 评论 -
【leetcode】49.字母异位词分组
题目详见 49.字母异位词分组题目难点题目是一个二维数组怎么判断当前词为异位词怎么将异位词分到一组,然后用一个大数组append住思路采用dict的方法来解决采用排序的方法将所有键为key的放在一起这里采用dict的values为defaultdict(list)Talk is cheap, show me the codeclass Solution: def groupAnagrams(self, strs: List[str]) -> List[List[st原创 2022-04-19 09:50:55 · 403 阅读 · 0 评论 -
【leetcode】42.接雨水
题目详见 42.接雨水题目难点应该采用什么样的解题方法解决?解题思路采用单调栈的方法,按照行的方向来接取雨水单调栈特点是栈底------->栈顶是单调递减的如果当前元素大于栈顶元素的话,这就天然形成了一个凹槽,例如 栈中53 当前元素是6,行程的536则表示一个凹槽凹槽能存水多少取决于左右两侧那一侧比较小如果当前元素等于栈顶元素,则栈顶元素弹出,当前元素入栈,例如55 31Talk is cheap,show me the codeclass Solution:原创 2022-04-16 15:31:26 · 961 阅读 · 0 评论 -
【leetcode】518.零钱兑换Ⅱ
题目详见518.零钱兑换Ⅱ难点初始化dp数组,i表示总金额为i dp[i]表示有多少方法拼成i物品和背包遍历顺序递推公式确定解决方案背包问题,物品数量是无限的,可以反复取因此是完全背包组成总金额的硬币组合数!代表不考虑硬币摆放顺序完全背包排列是先遍历背包,再遍历物品,因为要考虑排列顺序的不同,组合还是先物品再背包完全背包和01背包在遍历背包容量的时候仍是完全是顺序,01是逆序Talk is cheap,show me the codeclass Solution: d原创 2022-04-11 10:21:52 · 1106 阅读 · 0 评论 -
【leetcode】416.分割等和子集
题目详见 416.分割等和子集解题思路一个集合分成两个相等子集,等价于背包容量为子集大小的01背包问题,且容量和价值是相同的dp[i] i表示 容量为i ,dp[i] 表示价值初始化很重要!题目限定长度[1,200],并且每个值是[0,100],所以最大容量也就是10000Talk is cheap,show me the codeclass Solution: def canPartition(self, nums: List[int]) -> bool:原创 2022-04-10 13:23:35 · 401 阅读 · 0 评论 -
【leetcode】714.买卖股票的最佳时机含手续费
题目详见 714.买卖股票的最佳时机含手续费题目难点买入和卖出时机的位置怎么算解决方案买入点:最低价格就行卖出点:例如1、6、8 fee=2,很明显在1买入,在8卖出,那怎么用算法来判断呢,我们可以在6的时候收获一次利润6-1-fee,然后让minprice等于6-fee,这样第二次利润就是8-(6-fee),将所以利润加起来就是总利润,记住在一个买入卖出仅收一次手续费 ,这就是为什么要minprice = 6- feeTalk is cheap,show me the codecla原创 2022-04-09 10:19:35 · 563 阅读 · 0 评论 -
【leetcode】435.无重叠区间
题目详见435.无重叠区间解题思路按照右边界排序,右边界越小越好,这样留给下面的边界区域就可以更大找最多无重叠区域的个数,等价于删除最少的重叠区间Talk is cheap,show me the codeclass Solution: def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int: if len(intervals) == 0: return 0原创 2022-04-08 16:36:07 · 452 阅读 · 0 评论 -
【leetcode】134.加油站
题目详细见134.加油站解题思路:如果sum(gas) < sum(cost) 肯定是无法转一圈的!!!!找到起始点必须是 gas[i] >= cost[i] 否则起步都是负数Talk is cheap,show me the codeclass Solution: def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int: ''' 情况一:如果gas的总和小于c原创 2022-04-08 10:47:55 · 586 阅读 · 0 评论 -
【leetcode】剑指 Offer II 085. 生成匹配的括号
题目链接剑指 Offer II 085. 生成匹配的括号输入:n = 3 # 3对括号组合方式输出:["((()))","(()())","(())()","()(())","()()()"]解题思路:可以抽象成树然后就是一个深度优先搜索问题,即先序(根左右)剪枝:开括号 > 2 and 闭括号数 > 开括号(这个代表闭括号是在开阔号前面)代码如下:剪枝 + 先序遍历class Solution: def generateParenthesis(self, n原创 2022-04-05 21:05:06 · 700 阅读 · 0 评论 -
【leecode】332.重新安排行程
题目具体详见 leecode.332输入:tickets = [["MUC","LHR"],["JFK","MUC"],["SFO","SJC"],["LHR","SFO"]]输出:["JFK","MUC","LHR","SFO","SJC"]重点环怎么出,也就是return语句tickets怎么映射下面根据代码讲,测试用例如上输入输出from collections import defaultdictclass Solution: def findItinerary(sel原创 2022-04-05 20:29:07 · 214 阅读 · 0 评论 -
【leetcode】93.复原 IP 地址
问题描述:有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你 不能 重新排序或删除原创 2022-03-08 15:42:35 · 1119 阅读 · 0 评论 -
【leetcode】131.分割回文串
问题描述:给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。示例:输入:s = "aab"输出:[["a","a","b"],["aa","b"]]输入:s = "a"输出:[["a"]]解法思路:采用回溯来解决startIndex表示切割的起始位置,for循环里面操作的不再是单个字符,而是一个字符串切割出来的字符串,判断是否是回文,如果是,path则append终止条件为startIndex大于len(s)#回溯模板p原创 2022-03-07 19:23:38 · 3784 阅读 · 0 评论 -
【leetcode】106.从中序与后序遍历序列构造二叉树
问题描述:给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。示例解题思路:后序最后一个数为整个树的根节点根据这个根节点去切分中序,该根节点的左边为左子树,右边为右子树根据中序左子树去切分后序,将其切分左右子树,需要注意的是中序左右子树和后序左右子树长度相等递归代码如下:class Solution: def buildTree(self, inorde原创 2022-03-04 17:21:47 · 277 阅读 · 0 评论 -
【leetcode】15. 三数之和
问题描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。解题思路:首先将无序的数组变成有序数组取出数组中的一个值nums[i],取出顺序按照下标0~len(nums)然后剩下的数组利用left和right指针遍历,total = i + left + right ,如果total>0,right向左移动,total<0,l原创 2022-02-24 20:59:10 · 149 阅读 · 0 评论 -
【leetcode】206.反转链表
问题描述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。解决方法:双指针第一步设置虚拟头节点,防止头节点丢失设置一个pre和temp指针# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = next##类似一个滑动窗口 cur指向head原创 2022-01-16 21:33:33 · 183 阅读 · 0 评论 -
【leetcode】27.移除元素
题目描述:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。class Solution: def removeElement(self, nums: List[int], val: int) -> int: while(val in nums): # 判断 nums原创 2022-01-12 20:01:41 · 3136 阅读 · 0 评论 -
【leetcode】167.两数之和
给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。输入:numbers = [2,7,11,15], target =原创 2022-01-04 22:09:20 · 80 阅读 · 0 评论