leetcode 中等
找到工作之前每天坚持
明天把困难补了
展开
-
利用python 完成 leetcode264 丑数 II
编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1 是丑数。n 不超过1690。思路丑数一定由前面的丑数得来(某个丑数乘2,3,5)比如第8个丑数9(33)前7个[1, 2, 3, 4, 5, 6, 8]求...原创 2019-04-09 00:01:35 · 314 阅读 · 0 评论 -
利用python 完成 leetcode 138 复制带随机指针的链表
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{“KaTeX parse error: Expected '}', got 'EOF' at end of input: …":"1","next":{"id”:“2”,“next”:null,“random”:{“KaTeX parse error: Exp...原创 2019-03-14 23:58:57 · 763 阅读 · 0 评论 -
利用python 完成 leetcode 129 求根到叶子节点数字之和
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 ...原创 2019-03-13 23:57:47 · 223 阅读 · 0 评论 -
利用python 完成 leetcode152 乘积最大子序列
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。思路遍历数组,记算包括当前元素的连续子序列的最大乘积两种情况,括前一元素的连续子序列的最大...原创 2019-03-03 23:39:23 · 268 阅读 · 0 评论 -
利用python 完成 leetcode143 重排链表
给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1-...原创 2019-03-03 23:22:39 · 400 阅读 · 0 评论 -
利用python 完成 leetcode 209 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。思路滑动窗口窗口起始位置设为a,结束位置设为b当窗口内数字和sum(nums[a:b])大于等于...原创 2019-03-08 23:42:47 · 308 阅读 · 0 评论 -
利用python 完成leetcode 106 从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:3/ \9 20/ \15 7思路因为后序遍历最后遍历根节点,所以postorder 的最后一个元素就是根节点(postorder [-1]),...原创 2019-02-26 22:53:28 · 331 阅读 · 0 评论 -
利用python 完成leetcode105 从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7思路因为前序遍历首先遍历根节点,所以preorder 的第一个元素就是根节点,因为中序遍历先遍历左半部分,再遍历根节点...原创 2019-02-26 22:40:20 · 184 阅读 · 0 评论 -
利用python 完成leetcode103 二叉树的锯齿形层次遍历
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回锯齿形层次遍历如下:[[3],[20,9],[15,7]]思路和102题基本相同,将字典中奇数键的列表倒转即可102题https://blog...原创 2019-02-26 22:18:50 · 198 阅读 · 0 评论 -
利用python 完成leetcode102 二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ \ 9 20/ \15 7返回其层次遍历结果:[[3],[9,20],[15,7]]思路利用字典分别储存每一层的数据即可代码def levelOrder(self, root): ...原创 2019-02-26 22:11:09 · 177 阅读 · 0 评论 -
利用python 完成 leetcode131 分割回文串
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: “aab”输出:[[“aa”,“b”],[“a”,“a”,“b”]]思路用i遍历数组各个位置,如果s[:i]为回文串,则对后半部分进行递归,将返回的结果中每一项加上s[:i]并将该项添加至最终结果代码 def partition(self, s): ...原创 2019-03-02 23:21:38 · 698 阅读 · 3 评论 -
利用python 完成leetcode62 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总...原创 2019-02-21 11:58:08 · 172 阅读 · 0 评论 -
利用python 完成leetcode61 旋转链表
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4-&am原创 2019-02-21 11:42:54 · 237 阅读 · 0 评论 -
利用python 完成leetcode60 第k个排列
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:输入: n = 3, k = 3输出: “213...原创 2019-02-21 11:26:20 · 891 阅读 · 0 评论 -
利用python 完成leetcode56 合并区间
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。思路首先将...原创 2019-02-21 10:49:22 · 382 阅读 · 0 评论 -
利用python 完成 leetcode 134 加油站
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非...原创 2019-03-10 23:28:59 · 399 阅读 · 0 评论 -
利用python 完成 leetcode 179 最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。思路如果str(a)+str(b)>str(b)+str(a)那么a就比b更适合放在前面例如‘9’ 和‘91’str(‘9’)+str(‘...原创 2019-03-07 23:11:47 · 662 阅读 · 0 评论 -
利用python 完成 leetcode 213 打家劫舍 II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: 你不能...原创 2019-03-08 00:00:35 · 236 阅读 · 0 评论 -
利用python 完成 leetcode 200 岛屿的个数
给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3思路遍历所有点,如果该点在岛上,将该岛上所有点全部置为0...原创 2019-04-02 23:24:00 · 679 阅读 · 0 评论 -
利用python 完成 leetcode 137 只出现一次的数字 II
只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99代码def singleNumber(self, nums): a=0 b=0 for i in nums: ...原创 2019-03-28 23:46:33 · 194 阅读 · 0 评论 -
利用python 完成 leetcode 17 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].代码def letterCombinations(self, digits): if(digits=...原创 2019-03-27 23:51:36 · 124 阅读 · 0 评论 -
利用python 完成 leetcode222 完全二叉树的节点个数
给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输出: 6思路如果完全二叉树最底层节点没满的话,该完全二...原创 2019-04-04 23:52:42 · 425 阅读 · 0 评论 -
利用python 完成 leetcode 215 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。思路利用快排思想,以nums[0]为基...原创 2019-04-03 23:36:28 · 643 阅读 · 0 评论 -
利用python 完成 leetcode 334 递增的三元子序列
给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例 1:输入: [1,...原创 2019-03-30 00:10:27 · 157 阅读 · 0 评论 -
利用python 完成 leetcode 198 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...原创 2019-03-22 23:47:48 · 98 阅读 · 0 评论 -
利用python 完成 leetcode228 汇总区间
给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。示例 1:输入: [0,1,2,4,5,7]输出: [“0->2”,“4->5”,“7”]解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。示例 2:输入: [0,2,3,4,6,8,9]输出: [“0”,“2->4”,“6”,“8->9”]解释: 2,3,4 可组成一个连续的...原创 2019-03-18 23:48:49 · 284 阅读 · 0 评论 -
利用python 完成 leetcode 166 分数到小数
给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。示例 1:输入: numerator = 1, denominator = 2输出: “0.5”示例 2:输入: numerator = 2, denominator = 1输出: “2”示例 3:输入: numerator...原创 2019-03-21 23:46:02 · 516 阅读 · 0 评论 -
利用python 完成 leetcode 199 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---思路从上至下一层一层遍历二叉树,...原创 2019-03-12 23:56:15 · 441 阅读 · 0 评论 -
利用python 完成 leetcode 216 组合总和 III
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]思路回溯法递归即可,用变量m储存能够选择...原创 2019-03-17 23:29:28 · 286 阅读 · 0 评论 -
利用python 完成 leetcode 331 验证二叉树的前序序列化
序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # # #例如,上面的二叉树可以被序列化为字符串 “9,3,4,#,#,1,#,#,2,#...原创 2019-03-11 23:25:38 · 411 阅读 · 0 评论 -
利用python 完成 leetcode150 逆波兰表达式求值
根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: ((2 + 1) * 3) = 9示例 2:输入:...原创 2019-03-15 23:59:28 · 786 阅读 · 0 评论 -
利用python 完成 leetcode 165 比较版本号
比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和 . 字符。. 字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。你可以假设...原创 2019-03-19 23:40:58 · 422 阅读 · 0 评论 -
利用python 完成leetcode55 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最...原创 2019-02-21 09:53:53 · 330 阅读 · 0 评论 -
利用python 完成leetcode 95 不同的二叉搜索树 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 种不同结构的二叉搜索树:1 3 3 2 1\ / ...原创 2019-02-25 23:05:57 · 526 阅读 · 1 评论 -
利用python 完成leetcode 91 解码方法
一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -&gt; 1‘B’ -&gt; 2…‘Z’ -&gt; 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “VF” (2...原创 2019-02-25 22:38:15 · 606 阅读 · 0 评论 -
利用python 完成leetcode 120 三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。思路最基础的动态规划,用triangle...原创 2019-02-27 23:08:13 · 203 阅读 · 0 评论 -
利用python 完成leetcode33搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], targ...原创 2019-02-18 16:26:30 · 269 阅读 · 0 评论 -
利用python 完成leetcode 114 二叉树展开为链表
给定一个二叉树,原地将它展开为链表。例如,给定二叉树1/ 2 5/ \ 3 4 6将其展开为:123456思路先将root.left为根节点的子树展开,记录展开后的最后一个节点,将root.right连接到该节点右侧,再将root.right为根节点的子树展开建立函数help,将树展开并返回最后一个节点代码 def flatten...原创 2019-02-27 22:23:16 · 397 阅读 · 0 评论 -
利用python 完成leetcode 113 路径总和 II
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:...原创 2019-02-27 22:14:55 · 158 阅读 · 0 评论 -
利用python 完成leetcode31 下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1分析当数组降序排列时,按升序排序即可其他情况,将数组从后...原创 2019-02-18 14:51:02 · 521 阅读 · 0 评论