Keshawn_lu's Blog

Keshawn_lu's Blog

Become a better myself.

Leetcode 76. 最小覆盖子串
题目简介:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。 示例: 12输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC" 说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。 思路:先将T中的字符存入至哈希表中,然后利用滑动窗口的思想,右端窗口不断往右遍历(即扩大窗口),并将字符压入window中,若发现当前字符出现在T中,并且出现次数也相等时(即str_t[s[...
Leetcode 105. 从前序与中序遍历序列构造二叉树
题目简介:根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 12前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 12345 3 / \9 20 / \ 15 7 思路:我们就按下面这个例子来讲解一下思路。 12前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 首先我们根据前序遍历知道它的第一个结点3便是根节点,再去遍历中序遍历,从而知道根节点在中序遍历的位置。 知道了根节点在中...
Leetcode 5. 最长回文子串
题目简介:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 123输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。 示例 2: 12输入: "cbbd"输出: "bb" 思路:定义一个dp[i][j]数组,来判断s[i]……s[j]的子字符串是否为回文串。 遍历字符串,若s[i] == s[j],则存在以下两种情况都可判别s[i]……s[j]为回文串: dp[i + 1][j - 1] == true j ...
Leetcode 1371. 每个元音包含偶数次的最长子字符串
题目简介:给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 'a','e','i','o','u' ,在子字符串中都恰好出现了偶数次。 示例 1: 123输入:s = "eleetminicoworoep"输出:13解释:最长子字符串是 "leetminicowor" ,它包含 e,i,o 各 2 个,以及 0 个 a,u 。 示例 2: 123输入:s = "leetcodeisgreat"输出:5解释:最长子字符串...
Leetcode 680. 验证回文字符串 Ⅱ
题目简介:给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 示例 1: 12输入: "aba"输出: True 示例 2: 123输入: "abca"输出: True解释: 你可以删除c字符。 注意: 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。 思路:首先写一个判断字符串是否是回文串的函数,然后设置两个指针一前一后依次遍历给定的字符串,如果两个指针指向的值不同,则判断字符串s[i + 1]……[j]或s[i]……s[j - 1]是否为回文串,即删除一个不相等的字符后,判断剩余的字符串是否为回文串。 代...
Leetcode 152. 乘积最大子数组
题目简介:给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 123输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 123输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 思路:利用动态规划的思想,因为数组有负数的存在(存在负负得正为最大值的情况),所以我们需要将每次以i为结尾的子数组乘积的最大值和最小值求出来。 f_{max}(i) = max(f_{max}(i - 1) * a_{i}, f_{mi...
Leetcode 210. 课程表 II
题目简介:现在你总共有 n 门课需要选,记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。 可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。 示例 1: 123输入: 2, [[1,0]] 输出: [0,1]解释: 总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为 [0,1] 。 示例 2: 1234输入: 4, [[1,0],[2,0],[3,...
Leetcode 5413. 重新排列句子中的单词
题目简介:「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text : 句子的首字母大写 text 中的每个单词都用单个空格分隔。 请你重新排列 text 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序。 请同样按上述格式返回新的句子。 示例 1: 1234输入:text = "Leetcode is cool"输出:"Is cool leetcode"解释:句子中共有 3 个单词,长度为 8 的 "Leetcode" ,长度为 2 的 "is&quo...
Leetcode 5397. 最简分数
题目简介:给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于 n 的 最简 分数 。分数可以以 任意 顺序返回。 示例 1: 123输入:n = 2输出:["1/2"]解释:"1/2" 是唯一一个分母小于等于 2 的最简分数。 示例 2: 12输入:n = 3输出:["1/2","1/3","2/3"] 示例 3: 123输入:n = 4输出:["1/2","1/3","1/4","...
Leetcode 5396. 连续字符
题目简介:给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。 请你返回字符串的能量。 示例 1: 123输入:s = "leetcode"输出:2解释:子字符串 "ee" 长度为 2 ,只包含字符 'e' 。 示例 2: 123输入:s = "abbcccddddeeeeedcba"输出:5解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。 示例 3: 12输入:s = "triplepillooooow&...
avatar
鸣蜩十九
Always
友链
CSDN BiliBili