![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
clbobo
这个作者很懒,什么都没留下…
展开
-
1_两数之和
"""给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]"""...原创 2019-11-11 13:56:57 · 273 阅读 · 0 评论 -
2_两数相加
"""给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8...原创 2019-11-11 13:58:36 · 63 阅读 · 0 评论 -
3_无重复字符的最长子串
"""给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是...原创 2019-11-11 14:01:59 · 84 阅读 · 0 评论 -
4_寻找两个有序数组的中位数
def median(A, B): m, n = len(A), len(B) if m > n: A, B, m, n = B, A, n, m if n == 0: raise ValueError imin, imax, half_len = 0, m, (m+n+1)//2 while imin <= ...原创 2019-11-07 10:08:13 · 67 阅读 · 0 评论 -
5_最长回文子串
"""给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb""""# 方法一 自己实现的# 实现最长回文数字 n(n*2)def longestPalindrome(s): str_len...原创 2019-11-11 14:04:31 · 65 阅读 · 0 评论 -
10_正则表达式匹配
"""给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。"""# 自顶向下def isMatch(s, p): memo = {} def dp(i,j): if (i, j) no...原创 2019-11-07 23:24:58 · 99 阅读 · 0 评论 -
11_盛最多水的容器
"""给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。"""def maxArea(height): maxarea = 0 ...原创 2019-11-08 13:20:00 · 73 阅读 · 0 评论 -
15_三数之和
"""给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]"""def t...原创 2019-11-11 13:50:58 · 53 阅读 · 0 评论 -
17_电话号码的字母组合
"""给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。"""# 回溯法def ...原创 2019-11-11 14:36:13 · 73 阅读 · 0 评论 -
18_四数之和
"""给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素 a,b,c和d使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。"""def FourSum(nums, target): n = len(nums) if n<4: return [] nums....原创 2019-11-08 13:24:10 · 60 阅读 · 0 评论 -
19_删除链表的倒数第N个节点
"""给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5."""# 双指针法def removeNthFromEnd(node, n): p = ListNode(0) p.next =...原创 2019-11-11 13:48:16 · 74 阅读 · 0 评论 -
20_有效的括号
"""给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:...原创 2019-11-11 13:53:49 · 91 阅读 · 0 评论 -
21_合并两个有序链表
"""将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4"""from ListNode import ListNodefrom PrintNode import PrintListdef merg...原创 2019-11-13 13:39:13 · 155 阅读 · 0 评论 -
23_合并k个排序链表
"""合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6"""from ListNode import ListNodefrom PrintNode impor...原创 2019-11-13 14:28:21 · 60 阅读 · 0 评论 -
31_下一个排列
"""实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1"""# 字典序:对于数字1、2、3......n...原创 2019-11-13 16:01:57 · 106 阅读 · 0 评论 -
32_最长有效括号
def longestValidParentheses(s): if not s: return 0 res = 0 stack = [-1] for i in range(len(s)): if s[i] == '(': stack.append(i) else: ...原创 2019-11-14 13:06:21 · 76 阅读 · 0 评论 -
33_搜索旋转排序数组
# 二分查找def search(nums, target): left = 0 right = len(nums)-1 while left<right: mid = (left+right)//2 if nums[mid] > nums[right]: left = mid+1 ...原创 2019-11-14 14:52:02 · 68 阅读 · 0 评论 -
34_在排序数组中查找元素的第一个和最后一个位置
#方法一def FirstSearch(nums, target): if len(nums)==0: return -1 start = 0 end = len(nums)-1 while start<= end: mid = (start+end)//2 if nums[mid] >= target...原创 2019-11-14 18:04:43 · 177 阅读 · 0 评论 -
39_组合总和
"""给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为...原创 2019-11-15 08:33:01 · 79 阅读 · 0 评论 -
40_组合总和Ⅱ
"""给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。 示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:...原创 2019-11-17 11:00:17 · 85 阅读 · 0 评论 -
42_接雨水
# 方法一 def trap(height): ans = 0 size = len(height) for i in range(1, size-1): max_left = 0 max_right = 0 for j in range(i,-1, -1): max_left = ...原创 2019-11-17 10:58:31 · 79 阅读 · 0 评论 -
46_全排列
"""给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]"""原创 2019-11-17 15:23:07 · 78 阅读 · 0 评论 -
47_全排列Ⅱ
"""给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]"""原创 2019-11-17 20:09:31 · 98 阅读 · 0 评论 -
48_旋转图像
"""给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]...原创 2019-11-17 15:24:25 · 70 阅读 · 0 评论 -
49_字母异位词分组
"""给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。"""def gr...原创 2019-11-19 10:28:59 · 72 阅读 · 0 评论 -
53_最大子序和
"""题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。"""def maxSubArray(lists): ans = lists[0] sum = 0 start ...原创 2019-10-29 22:17:31 · 59 阅读 · 0 评论 -
55_跳跃游戏
"""给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎...原创 2019-11-19 10:56:42 · 54 阅读 · 0 评论 -
56_合并区间
"""给出一个区间的集合,请合并所有重叠的区间。示例 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-11-28 10:47:23 · 66 阅读 · 0 评论 -
60_第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...原创 2019-12-05 10:49:08 · 80 阅读 · 0 评论 -
61_旋转链表
"""给定一个链表,旋转链表,将链表每个节点向右移动 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->...原创 2019-12-05 10:51:01 · 117 阅读 · 0 评论 -
62_不同路径
"""一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?"""def uniquePaths(m, n): # m行 n列 dp = [[1]*n] +[[1]+[0]*(n-1) for _ in...原创 2019-11-28 10:50:07 · 54 阅读 · 0 评论 -
63_不同路径Ⅱ
"""一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?"""def PathsObstacles(obstacleGrid): m = len(obstacleGrid...原创 2019-12-05 09:29:18 · 66 阅读 · 0 评论 -
64_最小路径和
"""给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。"""...原创 2019-11-28 10:51:25 · 61 阅读 · 0 评论 -
70_爬楼梯
"""假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。4. 1 阶 + 1 阶 + 1 阶5. 1 ...原创 2019-11-28 10:53:45 · 59 阅读 · 0 评论 -
72_编辑距离
"""给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:1.插入一个字符2.删除一个字符3.替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> rorse (将 'h' 替换为 'r')rorse ->...原创 2019-12-06 16:32:09 · 92 阅读 · 0 评论 -
75_颜色分类
"""给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]"""# 自己实现的,但是没有在原地进行修改def...原创 2019-12-07 21:25:47 · 76 阅读 · 0 评论 -
76_最小覆盖子串
"""题目:给你一个字符串S、一个字符串T,请在字符串S里面找出:包含T所有字母的最小子串。 示例: 输入:S="ADOBECODEBANC", T="ABC 输出:"BANC""""# 方法一 自己写的,但是leetcode上超时def minWindow(s, t): m =0 all_in = False if len(t)...原创 2019-12-07 21:28:42 · 68 阅读 · 0 评论 -
78_子集
"""给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]"""# 迭代def subsets1(nums): arr = [[]]...原创 2019-12-07 15:29:58 · 83 阅读 · 0 评论 -
79_单词搜索
"""给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCE...原创 2019-12-07 21:31:03 · 65 阅读 · 0 评论 -
84_柱状图中最大的矩形
"""给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。"""# 分治法def largestRectangleArea1(heights): return calculateArea(heights, 0, len(heights)-1)def calculateArea(heigh...原创 2019-12-07 21:21:43 · 62 阅读 · 0 评论