![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
lanmengyiyu
github:https://github.com/lanmengyiyu
youtube:https://www.youtube.com/channel/UC5pExhZmSEsYwPOkvs3M5vA?view_as=subscriber
email:545277714@qq.com
展开
-
leetcode 31.下一个排列(python3)44ms
题目描述:实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例2:输入:nums = [3,2,1]输出:[1,2,3]示例3:输入:nums = [1,1,5]输出:[1,5,1]示例4:输入:nums = [1]输出:[1]解题思路:c原创 2020-11-20 15:55:59 · 154 阅读 · 0 评论 -
leetcode 30 串联所有单词的子串(python3) 1768ms
题目描述:给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。示例1:输入:s = “barfoothefoobarman”,words = [“foo”,“bar”]输出:[0,9]解释:从索引 0 和 9 开始的子串分别是 “barfoo” 和 “foobar” 。输出的顺序不重要, [9,0] 也原创 2020-11-17 11:13:02 · 239 阅读 · 0 评论 -
leetcode 29.两数相除(python3)68ms
题目描述:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3.33333…) = tru原创 2020-09-28 16:12:44 · 533 阅读 · 0 评论 -
leetcode 28. 实现 strStr()(python3) 48ms
题目描述:实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:示例2:输入: haystack = “aaaaa”, needle = “bba”输出: -1说明:说明:当 needle 是空字符串时,我们应当返原创 2020-09-14 15:43:13 · 138 阅读 · 0 评论 -
leetcode 27 移除元素(python3) 40ms
题目描述:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,1,2,2原创 2020-09-14 10:52:18 · 160 阅读 · 0 评论 -
leetcode 26. 删除排序数组中的重复项(python3) 52ms
题目描述:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原原创 2020-09-14 09:37:43 · 116 阅读 · 0 评论 -
leetcode 25. K 个一组翻转链表(python3)60ms
题目描述:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内原创 2020-09-11 17:37:22 · 315 阅读 · 0 评论 -
leetcode 24. 两两交换链表中的节点 (python3) 44ms
题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.解题思路:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.n原创 2020-09-08 16:14:23 · 129 阅读 · 0 评论 -
leetcode 23.合并K个排序链表(python3) 148ms
题目描述:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6解题思路:思路借鉴:https://leetcode-cn.com/problems/merge-k-sorted-lists/solution/leetcode-23-he-bing-kge-pai-xu-lian-bi原创 2020-08-14 16:42:32 · 202 阅读 · 0 评论 -
leetcode 22.括号生成(python3) 44ms
题目描述:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]解题思路:class Solution: def genParenthesis(self, a: int, b: int) -> List[str]: output = [] if a == 0 and b =原创 2020-08-06 15:23:10 · 176 阅读 · 0 评论 -
leetcode 21. 合并两个有序链表(python3) 56ms
题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val =原创 2020-08-04 14:31:55 · 181 阅读 · 0 评论 -
leetcode 20. 有效的括号(python3) 36 ms
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例一:输入: “()”输出: true示例二:输入: “()[]{}”输出: true示例三:输入: “(]”输出: false示例四:输入: “([)]”输出: false示例五:输入: “{[]}”输出: true解题思路原创 2020-07-29 18:10:31 · 123 阅读 · 0 评论 -
leetcode 19. 删除链表的倒数第N个节点(python) 40ms
问题描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解题思路:# Definition for singly-linked list.# class ListNode:# def __init__(self原创 2020-07-29 17:08:45 · 129 阅读 · 0 评论 -
leetcode 18. 四数之和(python3)1632ms
题目描述:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2],[-2, 0, 0, 2]]原创 2020-07-29 12:02:19 · 151 阅读 · 0 评论 -
leetcode 17. 电话号码的字母组合(python3) 52ms
题目描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].解题思路:class Solution: def letterCombinations(self, digits: str) -> List[str]: output = []原创 2020-07-23 17:20:26 · 174 阅读 · 0 评论 -
leetcode 16.最接近的三数之和(python3)184ms
题目描述:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= nums[i] <= 10^3-1原创 2020-07-22 15:35:05 · 173 阅读 · 0 评论 -
leetcode 15.三数之和(python3) 1288 ms
题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]解题思路:class Solution: def threeSum(self, nums: List[int]) -原创 2020-07-22 10:30:55 · 135 阅读 · 0 评论 -
leetcode 14.最长公共前缀(python3) 48ms
题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。说明:所有输入只包含小写字母 a-z 。示例一:输入: [“flower”,“flow”,“flight”]输出: “fl”示例二:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。解题思路:class Solution: def longestCommonPrefix(self, strs: List[str]) ->原创 2020-07-15 11:23:49 · 144 阅读 · 0 评论 -
leetcode 13.罗马数字转整数(python3) 64ms
题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II原创 2020-07-14 16:47:10 · 248 阅读 · 0 评论 -
leetcode 12.整数转罗马数字(python3) 72ms
题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II原创 2020-07-14 16:06:16 · 173 阅读 · 0 评论 -
leetcode 11.盛最多水的容器(python3) 68ms
题目描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49解题思路:class Solution: def maxArea(self, height: List[int]) -原创 2020-07-13 12:15:30 · 166 阅读 · 0 评论 -
leetcode 10.正则表达式匹配(python) 76ms
题目描述:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。‘.’ 匹配任意单个字符'’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例一:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例二:输入:s原创 2020-07-10 16:06:59 · 172 阅读 · 0 评论 -
leetcode 9.回文数(python) 112ms
题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例一:输入: 121输出: true示例二:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例三:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解题思路:class Solution(object): def isPalindrome(se原创 2020-06-28 11:18:15 · 152 阅读 · 0 评论 -
leetcode 8.字符串转换整数 (atoi) (python) 40ms
题目描述:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是原创 2020-06-24 15:59:07 · 162 阅读 · 0 评论 -
leetcode 7.整数反转 (python) 24ms
题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例一:输入: 123输出: 321示例二:输入: -123输出: -321示例三:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解题思路:class Solution(object): def reverse(self, x):原创 2020-06-23 16:29:56 · 143 阅读 · 0 评论 -
leetcode 6. Z 字形变换 (python) 84ms
题目描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。示例一:比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。示例二:解题思路:class Solution(object): def convert(self, s, numRows): """ :type s: str原创 2020-06-22 15:13:05 · 113 阅读 · 0 评论 -
leetcode 5.最长回文子串(python) 768ms
题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例2:输入: “cbbd”输出: “bb”解题思路:暴力穷举:class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str原创 2020-06-18 16:30:11 · 194 阅读 · 0 评论 -
leetcode 4. 寻找两个正序数组的中位数(python)52ms
题目描述:给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例:nums1 = [1, 3]nums2 = [2]则中位数是 2.0nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5解题思路:class Solution(object): def原创 2020-06-11 10:32:27 · 317 阅读 · 0 评论 -
leetcode 3.无重复字符的最长子串(python) 52ms
题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。解题思路:cl原创 2020-06-10 17:04:41 · 251 阅读 · 0 评论 -
leetcode 2.两数相加(python)72ms
题目要求:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解题思路:# Definition for si原创 2020-06-09 11:26:13 · 157 阅读 · 0 评论 -
leetcode 1. 两数之和 (python) 32ms
两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。解题思路一:def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ for idx in range(l..原创 2020-06-05 17:45:15 · 215 阅读 · 0 评论