04 2021 档案

【LeetCode-368】最大整除子集
摘要:问题 给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足answer[i] % answer[j] == 0或answer[j] % answer[i] == 0。如果存在多个
59
0
0
【LeetCode-363】矩形区域不超过 K 的最大数值和
摘要:问题 给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。 题目数据保证总会存在一个数值和不超过 k 的矩形区域。 示例 输入: matrix = [[1,0,1],[0,-2,3]], k = 2 输出: 2 解释: 蓝色边框圈出来的
73
0
0
【C++】Manacher算法
摘要:Manacher算法可以在O(n)的时间复杂度解决最长回文串问题。 字符串预处理 为了避免讨论奇偶性,首先对原始字符串进行预处理,也就是在每个字符间隙加上#,即将aab变为#a#a#b#。当指向#时,代表回文串长度为偶数,否则为奇数。 string t = "#"; for (char c : s)
132
0
0
【C++】KMP算法
摘要:KMP算法用于解决字符串匹配问题,时间复杂度为O(m + n)。设s为待匹配字符串,'p'为m为模版字符串。'm'为s的长度,n为p的长度) 运用前后缀性质减少重复比较 从上图可以看出,当b与f失配时,与朴素暴力解法中直接将p后移一位继续比较不同,KMP方法利用p中存在的最长公共前后缀aa省略了重复
228
0
0
【LeetCode-28】实现 strStr()
摘要:问题 实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很
45
0
0
【LeetCode-30】串联所有单词的子串
摘要:问题 给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。 示例 输入: s = "barfoothefoobarm
50
0
0
【LeetCode-567】字符串的排列
摘要:问题 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的 子串 。 示例 输入: s1 = "ab" s2 = "eidbaooo" 输出: True 解释: s2 包含 s1 的排列之一 ("ba"). 解答1:固定长
52
0
0
【LeetCode-951】翻转等价二叉树
摘要:问题 我们可以为二叉树 T 定义一个翻转操作,如下所示:选择任意节点,然后交换它的左子树和右子树。 只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转等价于二叉树 Y。 编写一个判断两个二叉树是否是翻转等价的函数。这些树由根节点 root1 和 root2 给出。 示例 输入
43
0
0
【LeetCode-87】扰乱字符串
摘要:问题 使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行下述步骤: 在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串 s ,则可以将其分成两个子字符串 x 和 y ,且满足 s = x + y 。 随机
71
0
0
【LeetCode-213】打家劫舍 II
摘要:问题 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组,计算你
42
0
0
【LeetCode-480】滑动窗口中位数
摘要:问题 中位数是有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。 示例 输入: nums = [1,3,-1,-3,5,3,6,7], k = 3 输出: [1,-1,-1,3,5,6] 解答 class Solution { public: vec
83
0
0
【LeetCode-4】寻找两个正序数组的中位数
摘要:问题 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 示例 输入: nums1 = [1,3], nums2 = [2] 输出: 2.00000 解释: 合并数组 = [1,2,3] ,中位数 2 解答 class So
38
0
0
【LeetCode-81】搜索旋转排序数组 II
摘要:问题 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 ⇐ k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nu
31
0
0
【LeetCode-33】搜索旋转排序数组
摘要:问题 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 ⇐ k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..
51
0
0
【LeetCode-940】不同的子序列 II
摘要:问题 给定一个字符串 S,计算 S 的不同非空子序列的个数。 因为结果可能很大,所以返回答案模 10^9 + 7. 示例 输入: "aba" 输出: 6 解释: 6 个不同的子序列分别是 "a", "b", "ab", "ba", "aa" 以及 "aba"。 解答 class Solution {
86
0
0
【LeetCode-115】不同的子序列
摘要:问题 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是) 题目数据保证答案符合 32 位带
47
0
0
【LeetCode-80】删除有序数组中的重复项 II
摘要:问题 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 输入: nums = [1,1,1,2,2,3] 输出: 5, nums
40
0
0
【LeetCode-1312】让字符串成为回文串的最少插入次数
摘要:问题 给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。 请你返回让 s 成为回文串的 最少操作次数 。 「回文串」是正读和反读都相同的字符串。 示例 输入: s = "mbadm" 输出: 2 解释: 字符串可变为 "mbdadbm" 或者 "mdbabdm" 。 解答1:编
176
0
0
【LeetCode-190】颠倒二进制位
摘要:问题 颠倒给定的 32 位无符号整数的二进制位。 示例 输入: 00000010100101000001111010011100 输出: 00111001011110000010100101000000 解答 class Solution { public: uint32_t reverseBits
27
0
0
【LeetCode-394】字符串解码
摘要:问题 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此
44
0
0
【LeetCode-1087】花括号展开
摘要:问题 我们用一个特殊的字符串 S 来表示一份单词列表,之所以能展开成为一个列表,是因为这个字符串 S 中存在一个叫做「选项」的概念: 单词中的每个字母可能只有一个选项或存在多个备选项。如果只有一个选项,那么该字母按原样表示。 如果存在多个选项,就会以花括号包裹来表示这些选项(使它们与其他字母分隔开)
806
0
0
【LeetCode-784】字母大小写全排列
摘要:问题 给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。 示例 输入: S = "a1b2" 输出: ["a1b2", "a1B2", "A1b2", "A1B2"] 解答1:DFS class Solution { public: v
77
0
0
【LeetCode-78】子集
摘要:问题 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 输入: nums = [1,2,3] 输出: [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 解答
43
0
0
【LeetCode-781】森林中的兔子
摘要:问题 森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。 返回森林中兔子的最少数量。 说明: answers 的长度最大为1000。 answers[i] 是在 [0, 999] 范围内的整数。 示例 输入:
84
0
0
【LeetCode-415】字符串相加
摘要:问题 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 提示: num1 和num2 的长度都小于 5100 num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形
56
0
0
【LeetCode-309】最佳买卖股票时机含冷冻期
摘要:问题 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)
51
0
0
【LeetCode-714】买卖股票的最佳时机含手续费
摘要:问题 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。 返回获得利润的最大值。 注意:这里的一笔交易指买
46
0
0
【LeetCode-121】买卖股票的最佳时机 I
摘要:问题 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回
34
0
0
【LeetCode-122】买卖股票的最佳时机 II
摘要:问题 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 输入: [7,1,5,3,6,4] 输出: 7 解答1:完整
33
0
0
【LeetCode-123】买卖股票的最佳时机 III
摘要:问题 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 输入: prices = [3,3,5,0,0,3,1,4] 输出: 6 解答
45
0
0
【LeetCode-188】买卖股票的最佳时机 IV
摘要:问题 给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 输入: k = 2, prices
57
0
0
【LeetCode-139】单词拆分
摘要:问题 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 输入: s = "leetcode", wordDict = ["leet", "
58
0
0
【LeetCode-279】完全平方数
摘要:问题 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。 示例 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4 解答 cla
56
0
0
【LeetCode-494】一和零
摘要:问题 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 示例 输入: strs = ["10", "0001", "
73
0
0
【LeetCode-494】目标和
摘要:问题 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 示例 输入: nums: [1, 1, 1, 1, 1
42
0
0
【LeetCode-1049】最后一块石头的重量 II
摘要:问题 有一堆石头,每块石头的重量都是正整数。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x ⇐ y。那么粉碎的可能结果如下: 如果 x == y,那么两块石头都会被完全粉碎; 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头
81
0
0
【LeetCode-416】分割等和子集
摘要:问题 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 输入: [1, 5, 11, 5] 输出: true 解释: 数组可以分割成 [1, 5, 5] 和 [11]. 解答1:背包问题模版 class Solution { public: bool
63
0
0
【LeetCode-18】四数之和
摘要:问题 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意:答案中不可以包含重复的四元组。 示例 输入: nums = [
46
0
0
【LeetCode-15】三数之和
摘要:问题 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 输入: nums = [-1,0,1,2,-1,-4] 输出: [[-1,-1,
44
0
0
【LeetCode-1】两数之和
摘要:问题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 输入: nums = [2,7,11,15]
36
0
0
【LeetCode-406】根据身高重建队列
摘要:问题 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返回输入数组 people 所表示的队列。返回的
54
0
0
点击右上角即可分享
微信分享提示