LeetCode题目
RexT1
这个作者很懒,什么都没留下…
展开
-
LeetCode题目(Python实现):课程表 II
文章目录题目拓扑序列:入度表(广度优先遍历)算法实现执行结果复杂度分析拓扑序列:深度优先搜索算法实现执行结果复杂度分析题目现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例1:输入: 2, [[1,0]]原创 2020-05-15 16:53:58 · 1082 阅读 · 1 评论 -
LeetCode题目(Python实现):课程表
文章目录题目拓扑序列算法实现执行结果方法一:入度表(广度优先遍历)算法实现执行结果复杂度分析题目你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例1:输入: 2, [[1,0]] 输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0原创 2020-05-14 00:22:43 · 1028 阅读 · 0 评论 -
LeetCode题目(Python实现):二叉树的最近公共祖先
文章目录题目方法一:递归算法实现执行结果复杂度分析方法二:使用父指针迭代算法实现执行结果小结题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1...原创 2020-05-03 22:08:48 · 1066 阅读 · 0 评论 -
LeetCode题目(Python实现):格雷编码
文章目录题目想法一:利用二进制算法实现执行结果执行结果公式法算法实现执行结果小结题目格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序...原创 2020-04-16 21:54:08 · 448 阅读 · 0 评论 -
LeetCode题目(Python实现):子集
文章目录题目想法一:利用二进制算法实现执行结果执行结果想法二:将二进制的想法直接运用(官方递归)算法实现执行结果执行结果小结题目给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3],...原创 2020-04-14 12:48:14 · 778 阅读 · 0 评论 -
LeetCode题目(Python实现):只出现一次的数字
文章目录题目想法一:利用集合算法实现执行结果执行结果位运算算法实现执行结果执行结果小结题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4想法一:利用集合利用集...原创 2020-04-07 18:37:12 · 1264 阅读 · 0 评论 -
LeetCode题目(Python实现):反转字符串
文章目录题目想法一:利用自带函数算法实现执行结果想法二:原地修改算法实现执行结果复杂度分析递归算法实现执行结果小结题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例1:输入:[...原创 2020-04-03 19:20:38 · 722 阅读 · 0 评论 -
LeetCode题目(Python实现): 通配符匹配
文章目录题目优化递归算法实现执行结果复杂度分析动态规划算法实现执行结果复杂度分析回溯算法实现执行结果复杂度分析小结题目给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p ...原创 2020-03-30 20:58:00 · 1382 阅读 · 0 评论 -
LeetCode题目(Python实现):加油站
文章目录题目想法一:暴力法算法实现执行结果复杂度分析官方算法实现执行结果复杂度分析图解法算法实现执行结果复杂度分析小结题目在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的...原创 2020-03-28 20:48:32 · 603 阅读 · 0 评论 -
LeetCode题目(Python实现):分发饼干
文章目录题目想法一:以每个字符为中心向两边扫描算法实现执行结果复杂度分析小结题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1 :输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例2 :输入: "cbbd"输出: "bb"想法一:以每个字符为中心向两边扫描算法实现def longestPal...原创 2020-03-27 00:11:02 · 965 阅读 · 2 评论 -
LeetCode题目(Python实现):跳跃游戏
文章目录题目想法一:逆序判断算法实现执行结果复杂度分析贪心:从前往后算法实现执行结果复杂度分析小结题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后...原创 2020-03-26 21:49:17 · 812 阅读 · 0 评论 -
LeetCode题目(Python实现):滑动窗口最大值
文章目录题目想法一:利用辅助栈算法实现执行结果复杂度分析双端队列算法实现执行结果复杂度分析动态规划算法实现执行结果复杂度分析双端队列简化版算法实现执行结果小结题目给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?示例 :...原创 2020-03-26 14:05:23 · 1010 阅读 · 0 评论 -
LeetCode题目(Python实现):判断子序列
文章目录题目想法一:遍历 t算法实现执行结果复杂度分析想法二:遍历 s算法实现执行结果迭代器和生成器算法实现执行结果利用 find()算法实现执行结果小结题目给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符...原创 2020-03-25 20:40:40 · 1340 阅读 · 0 评论 -
LeetCode题目(Python实现):设计循环双端队列
文章目录题目想法一:使用Python强大的列表算法实现执行结果想法二:自建算法实现执行结果小结题目设计实现双端队列。你的实现需要支持以下操作:MyCircularDeque(k):构造函数,双端队列的大小为k。insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。d...原创 2020-03-25 20:38:59 · 581 阅读 · 0 评论 -
LeetCode题目(Python实现): 整数反转
文章目录题目想法一:用整除剥离每一位算法实现执行结果复杂度分析想法二:利用字符串反转算法实现执行结果官方算法实现执行结果小结题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1 :输入: 123输出: 321示例2 :输入: -123输出: -321示例3 :输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整...原创 2020-03-24 13:17:22 · 650 阅读 · 0 评论 -
LeetCode题目(Python实现): 恢复二叉搜索树
文章目录题目对数组进行排序算法实现执行结果复杂度分析迭代中序遍历算法实现执行结果复杂度分析递归中序遍历算法实现执行结果复杂度分析Morris 中序遍历算法实现执行结果复杂度分析小结题目二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例1 :输入: [1,3,null,null,2] 1 / 3 \ 2输出: [3,1,null,nu...原创 2020-03-23 21:21:10 · 665 阅读 · 1 评论 -
LeetCode题目(Python实现):不同的二叉搜索树 II
文章目录题目递归算法实现执行结果复杂度分析动态规划算法实现执行结果小结题目给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例:输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉...原创 2020-03-22 21:52:31 · 615 阅读 · 0 评论 -
LeetCode题目(Python实现):二叉树的中序遍历
文章目录题目想法一:递归算法实现执行结果复杂度分析迭代算法实现执行结果复杂度分析颜色标记法算法实现执行结果复杂度分析小结题目给定一个二叉树,返回它的中序 遍历。输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?想法一:递归算法实现def inorderTraversa...原创 2020-03-21 18:39:16 · 1405 阅读 · 0 评论 -
LeetCode题目(Python实现):二叉树的最大深度
文章目录题目想法一:递归算法实现执行结果复杂度分析迭代算法实现执行结果迭代:利用双队列算法实现执行结果小结题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回...原创 2020-03-20 21:34:53 · 769 阅读 · 0 评论 -
LeetCode题目(Python实现):对称二叉树
文章目录题目想法一:递归算法实现执行结果复杂度分析想法二:迭代算法实现执行结果小结题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 ...原创 2020-03-19 22:40:50 · 321 阅读 · 0 评论 -
LeetCode题目(Python实现):逆波兰表达式求值
文章目录题目想法一:栈算法实现执行结果复杂度分析栈算法实现执行结果递归算法实现执行结果字典算法实现执行结果小结题目根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1 :输入: ["...原创 2020-03-19 10:58:07 · 817 阅读 · 0 评论 -
LeetCode题目(Python实现):最小栈
文章目录题目想法一:辅助栈算法实现执行结果复杂度分析小结题目设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例 :MinStack minStack = new MinStack();minSta...原创 2020-03-18 17:20:16 · 286 阅读 · 0 评论 -
LeetCode题目(Python实现):相同的树
文章目录题目想法一:递归算法实现执行结果复杂度分析迭代算法实现执行结果小结题目给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1 :输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,...原创 2020-03-18 16:38:52 · 490 阅读 · 0 评论 -
LeetCode题目(Python实现):正则表达式匹配
文章目录题目暴力递归算法实现执行结果带备忘录的递归算法实现执行结果小结题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的...原创 2020-03-17 23:12:50 · 786 阅读 · 0 评论 -
LeetCode题目(Python实现):最长回文子串
文章目录题目想法一:以每个字符为中心向两边扫描算法实现执行结果复杂度分析动态规划算法实现执行结果复杂度分析Manacher 算法算法实现执行结果复杂度分析小结题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1 :输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例2 :输入: "cbbd"输出: "b...原创 2020-03-16 21:42:52 · 635 阅读 · 0 评论 -
LeetCode题目(Python实现):无重复字符的最长子串
文章目录题目想法一:字典算法实现执行结果复杂度分析想法二:双指针算法实现执行结果复杂度分析滑动窗口:元组实现算法实现执行结果复杂度分析滑动窗口:字典实现算法实现执行结果复杂度分析小结题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1 :输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2 :输入:...原创 2020-03-15 19:21:31 · 1004 阅读 · 0 评论 -
LeetCode题目(Python实现):有效的括号
文章目录题目想法一算法实现执行结果复杂度分析栈算法实现执行结果复杂度分析另一种算法实现执行结果小结题目给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意:空字符串可被认为是有效字符串。示例1 :输入: "()"输出: true示例2 :输入: ...原创 2020-03-14 22:50:38 · 523 阅读 · 0 评论 -
LeetCode题目(Python实现):最长公共前缀
文章目录题目想法一算法实现执行结果复杂度分析水平扫描(和想法一相同,但是更简洁)算法实现执行结果利用zip算法实现执行结果复杂度分析利用zip算法实现执行结果复杂度分析分治法算法实现执行结果复杂度分析一行代码算法实现执行结果小结题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例1 :输入: ["flower","flow","flight"]...原创 2020-03-12 22:20:11 · 957 阅读 · 1 评论 -
LeetCode题目(Python实现):罗马数字转整数
文章目录题目想法一:直接计数算法实现执行结果复杂度分析想法二:分情况算法实现执行结果复杂度分析哈希法算法实现执行结果复杂度分析小结题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地...原创 2020-03-12 20:54:29 · 719 阅读 · 0 评论 -
LeetCode题目(Python实现):合并K个排序链表
LeetCode题目(Python实现):合并K个排序链表题目想法一:分治法算法实现执行结果复杂度分析暴力法算法实现执行结果复杂度分析分治法(官方)算法实现执行结果复杂度分析小结题目合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例 :输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1-&g...原创 2020-03-11 21:17:20 · 1110 阅读 · 0 评论 -
LeetCode题目(Python实现):删除链表的倒数第N个节点
文章目录题目想法一:哈希表算法实现执行结果复杂度分析两次遍历算法实现执行结果复杂度分析一次遍历算法实现执行结果复杂度分析小结题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例 :给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n ...原创 2020-03-10 21:24:17 · 1405 阅读 · 0 评论 -
LeetCode题目(Python实现):两数相加
文章目录题目想法一:新建链表算法实现执行结果复杂度分析想法二:原地修改执行结果复杂度分析递归法执行结果小结题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 :输入:(2 ...原创 2020-03-10 00:10:35 · 445 阅读 · 0 评论 -
LeetCode题目(Python实现):环形链表
文章目录题目自己的想法算法实现执行结果复杂度分析哈希表法执行结果复杂度分析小结题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例1 :输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点...原创 2020-03-09 20:26:49 · 392 阅读 · 0 评论 -
LeetCode题目(Python实现):删除排序链表中的重复元素
文章目录题目自己的想法算法实现执行结果复杂度分析双指针法执行结果复杂度分析小结题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1 :输入: 1->1->2输出: 1->2示例2 :输入: 1->1->2->3->3输出: 1->2->3自己的想法算法实现class Solution: de...原创 2020-03-07 22:13:45 · 1115 阅读 · 0 评论 -
LeetCode题目(Python实现):合并两个有序链表
文章目录题目想法一:新建一个链算法实现执行结果复杂度分析想法二:修改原链指向算法实现执行结果复杂度分析递归法算法实现执行结果复杂度分析迭代法算法实现执行结果复杂度分析小结题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 :输入:1->2->4, 1->3->4输出:1->1->2->3->...原创 2020-03-06 22:47:16 · 1364 阅读 · 4 评论 -
LeetCode题目(Python实现):买卖股票的最佳时机 III
文章目录题目动态规划算法实现执行结果复杂度分析状态机执行结果小结题目给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1 :输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买...原创 2020-03-06 22:44:17 · 656 阅读 · 0 评论 -
LeetCode题目(Python实现):买卖股票的最佳时机 II
文章目录题目自己的想法算法实现执行结果复杂度分析贪心法执行结果复杂度分析一行代码执行结果小结题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1 :输入: [7,1,5,3,6,4]输出: 7解释: 在第...原创 2020-03-04 22:46:10 · 385 阅读 · 0 评论 -
LeetCode题目(Python实现):最接近的三数之和
文章目录题目自己的想法算法实现执行结果复杂度分析改进版算法实现执行结果复杂度分析小结题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例 :例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近...原创 2020-03-04 19:46:27 · 456 阅读 · 0 评论 -
LeetCode题目(Python实现):三数之和
文章目录题目排序 + 双指针法算法实现执行结果复杂度分析分情况讨论法算法实现执行结果复杂度分析小结题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 :给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的...原创 2020-03-03 20:20:43 · 951 阅读 · 0 评论 -
LeetCode题目(Python实现):买卖股票的最佳时机
文章目录题目自己的想法算法实现执行结果复杂度分析自己的想法算法实现执行结果复杂度分析小结题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例1 :输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买...原创 2020-02-27 20:47:21 · 515 阅读 · 0 评论