![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
YonminMa
微信同名
展开
-
LeetCode:K个一组翻转链表(链表问题)
难度: 困难题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例1输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]示例2输入:head = [1,2,3,4,5], k = 3输出:[3,2,1,4,5]解题思路因别人已经将过程写得非常清晰,故直接引用如下,代码则是根据步骤自行编写。步骤分解:链表分区为已翻原创 2021-03-05 11:26:28 · 481 阅读 · 0 评论 -
LeetCode:反转链表(链表问题)
难度: 简单题目反转一个单链表。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路使用三个 ListNode,分别是prev,curr,next。curr是当前指针指向的节点,prev是curr的前一个节点,头节点的前一个节点是NULL,next是curr的下一个节点,用于遍历链表。prev curr next NULL 1 -> 2原创 2021-03-04 22:38:29 · 432 阅读 · 3 评论 -
LeetCode:最小覆盖子串(滑动窗口)
难度: 困难题目给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。注意: 如果 s 中存在这样的子串,我们保证它是唯一的答案。示例输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"解题思路这⼀题是滑动窗⼝的题⽬,在窗⼝滑动的过程中不断的包含字符串 T,直到完全包含字符串 T 的字符以后,起始位置向后移动至刚好不再完全包含字符串T时,记下左侧窗口的位置减一,和原创 2021-03-03 18:05:29 · 498 阅读 · 1 评论 -
LeetCode:不同路径(动态规划)
难度: 中等非常典型的动态规划问题题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例1输入:m = 3, n = 7输出:28示例2输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下原创 2021-02-28 19:07:21 · 897 阅读 · 0 评论 -
LeetCode:正则表达式匹配(动态规划)
难度: 困难题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串 s 的,而不是部分字符串。示例1输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例2输入:s = "aab" p = "c*a*b"输出:true解释:因为 '*' 表示零个或多个,这里 'c' 为 0 个, '原创 2021-02-28 16:41:42 · 423 阅读 · 0 评论 -
LeetCode:最长回文子串(动态规划)
题目给你一个字符串 s,找到 s 中最长的回文子串。子串(substring):原始字符串的一个连续子集;子序列(subsequence):原始字符串的一个子集。示例1输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例2输入:s = "a"输出:"a"解题思路动态规划需要有状态和状态转移方程:状态:dp[i][j]dp[i][j]dp[i][j] 表示子串s[i⋯j]s[i\cdots j]s[i⋯j] 是否为回文子串状态转移原创 2021-02-28 10:28:14 · 729 阅读 · 0 评论 -
LeetCode:无重复字符的最长子串(滑动窗口)
难度: 中等题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2输入: s = ""输出: 0解题思路(滑动窗口)滑动窗⼝的右边界不断的右移,只要没有重复的字符,就持续向右扩⼤窗⼝边界。⼀旦出现了重复字 符,就需要缩⼩左边界,直到重复的字符移出了左边界(使用map可直接将左边界跳转到正确的位置),然后继续移动滑动窗⼝的右边界。以此类推, 每次原创 2021-02-24 12:41:12 · 624 阅读 · 0 评论 -
LeetCode:最大子序和
难度:简单问题描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。题解(动态规划):初始化最大值为数组第一个数,以解决数组中只有单个数的问题;从第二个数开始遍历数组,如果上一个数大于0,则令 当前位置的数 = 当前位置数的数值 + 上一个数的数值;每次遍历后比较数组当前数值与最大值,并根据结原创 2021-02-22 15:52:14 · 574 阅读 · 0 评论