leetcode
文章平均质量分 54
找到工作之前每天坚持
明天把困难补了
展开
-
利用python 完成leetcode3 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...原创 2018-12-08 19:37:42 · 182 阅读 · 0 评论 -
利用python 完成leetcode2 两数相加
两数相加题目描述提示帮助提交记录社区讨论阅读解答随机一题给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。在这里插入代码片示例:输入:(2 -> 4 -> 3) ...原创 2018-12-08 19:45:51 · 81 阅读 · 0 评论 -
利用python 完成leetcode 1 两数之和
两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]分析利用字...原创 2018-12-08 20:11:28 · 128 阅读 · 0 评论 -
利用python 完成leetcode4 寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)...原创 2018-12-09 11:38:13 · 987 阅读 · 1 评论 -
利用python 完成leetcode63 不同路径 II
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[[0,0,0],[...原创 2019-02-21 15:46:11 · 216 阅读 · 0 评论 -
利用python 完成leetcode64 最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路简单的动态规划,建立数组dp,dp[y][x]表示到达坐标(y,x)的最小总和,因为只能向下或向右,所以dp[...原创 2019-02-21 16:05:03 · 280 阅读 · 0 评论 -
利用python 完成leetcode68 文本左右对齐
给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ’ ’ 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。文本的...原创 2019-02-21 19:08:01 · 276 阅读 · 0 评论 -
利用python 完成leetcode7 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21分析直接用str()转为字符串,如果负数则只江为负号后反转,否则全部反转,最后判断是否在范围内,不在则return 0def reverse(self, x): x=st...原创 2019-01-30 14:22:04 · 96 阅读 · 0 评论 -
利用python 完成leetcode13 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12...原创 2019-01-30 14:56:15 · 81 阅读 · 0 评论 -
利用python 完成leetcode14 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。分析江第一个字符串的字符依次与其他字符串中相应位置的字符比较...原创 2019-01-30 15:21:33 · 134 阅读 · 0 评论 -
利用python 完成leetcode21 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4分析首先建立一个新链表,然后同时遍历两个旧链表,每次将其中较小的元素添加至新链表后方,当其中一个旧链表遍历完毕时,将另一原创 2019-02-17 10:11:15 · 409 阅读 · 0 评论 -
利用python 完成leetcode22 括号生成
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]分析递归求每一种情况即可,设当‘(’没用光时,下一个符号可为‘(’,当‘(’的数量比‘)’多时,下一个符号可为‘)’代码设函数help help(s,a...原创 2019-02-17 10:35:28 · 129 阅读 · 0 评论 -
利用python 完成leetcode23 合并两个有序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3-&a原创 2019-02-17 11:20:47 · 193 阅读 · 0 评论 -
利用python 完成leetcode69 x 的平方根
实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。思路牛顿迭代法求解即可你甚至可以使用库函数代码 def mySqrt(self...原创 2019-02-22 14:47:11 · 233 阅读 · 0 评论 -
利用python 完成leetcode70
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。3. 1 阶 + 1 阶 + 1 阶4. 1 阶 + 2 阶5. ...原创 2019-02-22 15:13:46 · 318 阅读 · 0 评论 -
利用python 完成leetcode72 编辑距离
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = “horse”, word2 = “ros”输出: 3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘...原创 2019-02-22 16:01:35 · 444 阅读 · 0 评论 -
利用python 完成leetcode73 矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],...原创 2019-02-22 18:02:57 · 260 阅读 · 0 评论 -
利用python 完成leetcode74 搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [...原创 2019-02-22 18:06:54 · 427 阅读 · 0 评论 -
利用python 完成leetcode77 组合
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]思路两种情况,要么用了n,要么不用n两种结果全部统计即可代码def combine(self, n, k): l=[] if(n==k): ...原创 2019-02-22 21:09:56 · 477 阅读 · 0 评论 -
利用python 完成leetcode78 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]思路nums所有的子集有nums[0]的情况和没有nums[0]的情况等于在nums[1:]的所有子集中加上nums[0],(有...原创 2019-02-22 21:25:07 · 304 阅读 · 0 评论 -
利用python 完成leetcode67 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”思路int函数可以直接将字符串转换为数字,bin可以将数字转为字符串代码def addBinary(self, a: 'str',...原创 2019-02-22 21:29:45 · 148 阅读 · 0 评论 -
利用python 完成leetcode66 加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路将数组中...原创 2019-02-22 21:39:27 · 138 阅读 · 0 评论 -
利用python 完成leetcode75 颜色分类
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计...原创 2019-02-22 21:59:15 · 694 阅读 · 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 评论 -
利用python 完成leetcode 112 路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 ...原创 2019-02-27 22:00:13 · 159 阅读 · 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 完成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 115 不同的子序列
定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)示例 1:输入: S = “rabbbit”, T = “rabbit”输出: 3解释:如下图所示, 有 3 种可以从 S 中得到 “...原创 2019-02-27 22:45:39 · 181 阅读 · 0 评论 -
利用python 完成leetcode 118 杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]代码 def generate(self, numRows: int) -> List[List[int]]: l = [] ...原创 2019-02-27 23:02:30 · 165 阅读 · 0 评论 -
利用python 完成leetcode 119 杨辉三角 II
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]思路杨辉三角只需上一行便可推出当前行,保存一行即可代码 def getRow(self, rowIndex: int) -> List[int]: l=[1] for n in range...原创 2019-02-27 23:04:24 · 204 阅读 · 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 完成leetcode 116 填充每个节点的下一个右侧节点指针
struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:输入:{“KaTeX parse error: Expected '}', got...原创 2019-02-27 23:19:19 · 399 阅读 · 0 评论 -
利用python 完成leetcode 117 填充每个节点的下一个右侧节点指针 II
给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:输入:{“KaTeX parse error: Expected ...原创 2019-02-27 23:44:09 · 557 阅读 · 1 评论 -
利用python 完成leetcode 122 买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获...原创 2019-02-27 23:50:48 · 229 阅读 · 0 评论 -
利用python 完成leetcode35 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0分析二分搜索,...原创 2019-02-18 17:38:44 · 99 阅读 · 0 评论 -
利用python 完成 leetcode36 有效的数独
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,".",".",...原创 2019-02-18 17:42:59 · 111 阅读 · 0 评论 -
利用python 完成leetcode104 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。思路递归即可,记leftDepth为左子树最大深度,rightDepth为右子树最大深度,当前二叉树最大深度为两者中最大者加...原创 2019-02-23 21:22:50 · 332 阅读 · 0 评论 -
利用 python 完成 leetcode86 分隔链表
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路将原链表中比x大的元素挪到另一个新链表中,最后将两个链表首尾相连...原创 2019-02-23 21:28:35 · 195 阅读 · 0 评论 -
利用 python 完成 leetcode83 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3思路遍历链表,然后向后寻找不等于当前元素的第一个元素,将当前元素与其相连,中间相等的元素全部舍弃代码 def deleteDuplicates(sel...原创 2019-02-23 21:51:35 · 193 阅读 · 0 评论 -
利用 python 完成 leetcode82 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3思路因为是排好序的链表,所以相同的元素必然相邻遍历链表,用N表示当前元素,M指向...原创 2019-02-23 22:25:02 · 227 阅读 · 0 评论