前缀和
文章平均质量分 52
Guapifang
这个作者很懒,什么都没留下…
展开
-
LeetCode 1769. 移动所有球到每个盒子所需的最小操作数 -- 前缀和
在一步操作中,你可以将 一个 小球从某个盒子移动到一个与之相邻的盒子中。第 i 个盒子和第 j 个盒子相邻需满足 abs(i - j) == 1 。注意,操作执行后,某些盒子中可能会存在不止一个小球。返回一个长度为 n 的数组 answer ,其中 answer[i] 是将所有小球移动到第 i 个盒子所需的 最小 操作数。每个 answer[i] 都需要根据盒子的 初始状态 进行计算。示例 1:输入:boxes = “110”输出:[1,1,3]解释:每个盒子对应的最小操作数如下:输入:boxes =原创 2022-12-05 12:24:42 · 191 阅读 · 0 评论 -
LeetCode 764. 最大加号标志 -- 前缀和
返回 grid 中包含 1 的最大的 轴对齐 加号标志的阶数。如果未找到加号标志,则返回 0。一个 k 阶由 1 组成的 “轴对称”加号标志 具有中心网格 grid[r][c] == 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1,由 1 组成的臂。注意,只有加号标志的所有网格要求为 1 ,别的网格可能为 0 也可能为 1。示例 1:输入: n = 5, mines = [[4, 2]]输出: 2解释: 在上面的网格中,最大加号标志的阶只能是2。一个标志已在图中标出。原创 2022-11-09 15:05:36 · 165 阅读 · 0 评论 -
LeetCode 2055. 蜡烛之间的盘子--前缀和+区间标记
蜡烛之间的盘子给你一个长桌子,桌子上盘子和蜡烛排成一列。给你一个下标从 0 开始的字符串 s ,它只包含字符 ‘’ 和 ‘|’ ,其中 '’ 表示一个 盘子 ,’|’ 表示一支 蜡烛 。同时给你一个下标从 0 开始的二维整数数组 queries ,其中 queries[i] = [lefti, righti] 表示 子字符串 s[lefti…righti] (包含左右端点的字符)。对于每个查询,你需要找到 子字符串中 在 两支蜡烛之间 的盘子的 数目 。如果一个盘子在 子字符串中 左边和右边 都 至.原创 2022-03-08 11:10:12 · 116 阅读 · 0 评论 -
LeetCode 689. 三个无重叠子数组的最大和 -- 前缀和+位置标记
三个无重叠子数组的最大和给你一个整数数组 nums 和一个整数 k ,找出三个长度为 k 、互不重叠、且 3 * k 项的和最大的子数组,并返回这三个子数组。以下标的数组形式返回结果,数组中的每一项分别指示每个子数组的起始位置(下标从 0 开始)。如果有多个结果,返回字典序最小的一个。示例 1:输入:nums = [1,2,1,2,6,7,5,1], k = 2输出:[0,3,5]解释:子数组 [1, 2], [2, 6], [7, 5] 对应的起始下标为 [0, 3, 5]。也可以取 [.原创 2021-12-08 15:56:13 · 3620 阅读 · 0 评论 -
LeetCode 面试题 17.15. 最长单词 -- map+dfs
面试题 17.15. 最长单词给定一组单词words,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串。示例:输入: [“cat”,“banana”,“dog”,“nana”,“walk”,“walker”,“dogwalker”]输出: “dogwalker”解释: "dogwalker"可由"dog"和"walker"组成。提示:0 <= len(words) <= 2原创 2021-12-03 12:08:03 · 398 阅读 · 0 评论 -
LeetCode 820. 单词的压缩编码 -- 公共后缀
单词的压缩编码单词数组 words 的 有效编码 由任意助记字符串 s 和下标数组 indices 组成,且满足:words.length == indices.length助记字符串 s 以 '#' 字符结尾对于每个下标 indices[i] ,s 的一个从 indices[i] 开始、到下一个 '#' 字符结束(但不包括 '#')的 子字符串 恰好与 words[i] 相等给你一个单词数组 words ,返回成功对 words 进行编码的最小助记字符串 s 的长度 。示例 1:输入:.原创 2021-12-02 11:14:06 · 113 阅读 · 0 评论 -
LeetCode 396. 旋转函数--前缀和
旋转函数给定一个长度为 n 的整数数组 A 。假设 Bk 是数组 A 顺时针旋转 k 个位置后的数组,我们定义 A 的“旋转函数” F 为:F(k) = 0 * Bk[0] + 1 * Bk[1] + … + (n-1) * Bk[n-1]。计算F(0), F(1), …, F(n-1)中的最大值。注意:可以认为 n 的值小于 105。示例:A = [4, 3, 2, 6]F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4 .原创 2021-11-01 14:42:51 · 3848 阅读 · 0 评论 -
LeetCode 1277. 统计全为 1 的正方形子矩阵--前缀和
统计全为 1 的正方形子矩阵给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。示例 1:输入:matrix =[[0,1,1,1],[1,1,1,1],[0,1,1,1]]输出:15解释:边长为 1 的正方形有 10 个。边长为 2 的正方形有 4 个。边长为 3 的正方形有 1 个。正方形的总数 = 10 + 4 + 1 = 15.示例 2:输入:matrix =[[1,0,1],[1,1,0.原创 2021-10-29 13:30:18 · 118 阅读 · 0 评论 -
LeetCode 1031. 两个非重叠子数组的最大和--前缀和
两个非重叠子数组的最大和给出非负整数数组 A ,返回两个非重叠(连续)子数组中元素的最大和,子数组的长度分别为 L 和 M。(这里需要澄清的是,长为 L 的子数组可以出现在长为 M 的子数组之前或之后。)从形式上看,返回最大的 V,而 V = (A[i] + A[i+1] + … + A[i+L-1]) + (A[j] + A[j+1] + … + A[j+M-1]) 并满足下列条件之一:0 <= i < i + L - 1 < j < j + M - 1 < A.l.原创 2021-10-26 11:35:17 · 97 阅读 · 0 评论 -
LeetCode 2012. 数组美丽值求和--前缀和
数组美丽值求和给你一个下标从 0 开始的整数数组 nums 。对于每个下标 i(1 <= i <= nums.length - 2),nums[i] 的 美丽值 等于:2,对于所有 0 <= j < i 且 i < k <= nums.length - 1 ,满足 nums[j] < nums[i] < nums[k]1,如果满足 nums[i - 1] < nums[i] < nums[i + 1] ,且不满足前面的条件0,如果上述条.原创 2021-10-18 12:25:19 · 287 阅读 · 0 评论 -
LeetCode 1749. 任意子数组和的绝对值的最大值---前缀和
任意子数组和的绝对值的最大值给你一个整数数组 nums 。一个子数组 [numsl, numsl+1, …, numsr-1, numsr] 的 和的绝对值 为 abs(numsl + numsl+1 + … + numsr-1 + numsr) 。请你找出 nums 中 和的绝对值 最大的任意子数组(可能为空),并返回该 最大值 。abs(x) 定义如下:如果 x 是负整数,那么 abs(x) = -x 。如果 x 是非负整数,那么 abs(x) = x 。示例 1:输入:nums =.原创 2021-10-14 10:35:18 · 235 阅读 · 0 评论 -
LeetCode 1052. 爱生气的书店老板--前缀和
爱生气的书店老板今天,书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次。请你返回这一天营业下来.原创 2021-09-24 18:51:21 · 56 阅读 · 0 评论 -
LeetCode 849. 到最近的人的最大距离--前缀和
到最近的人的最大距离给你一个数组 seats 表示一排座位,其中 seats[i] = 1 代表有人坐在第 i 个座位上,seats[i] = 0 代表座位 i 上是空的(下标从 0 开始)。至少有一个空座位,且至少有一人已经坐在座位上。亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。返回他到离他最近的人的最大距离。示例 1:输入:seats = [1,0,0,0,1,0,1]输出:2解释:如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离.原创 2021-08-31 08:44:14 · 76 阅读 · 0 评论 -
LeetCode 848. 字母移位--前缀和
字母移位有一个由小写字母组成的字符串 S,和一个整数数组 shifts。我们将字母表中的下一个字母称为原字母的 移位(由于字母表是环绕的, ‘z’ 将会变成 ‘a’)。例如·,shift(‘a’) = ‘b’, shift(‘t’) = ‘u’,, 以及 shift(‘z’) = ‘a’。对于每个 shifts[i] = x , 我们会将 S 中的前 i+1 个字母移位 x 次。返回将所有这些移位都应用到 S 后最终得到的字符串。示例:输入:S = “abc”, shifts = [3,5.原创 2021-08-31 08:34:57 · 123 阅读 · 0 评论 -
LeetCode 462. 最少移动次数使数组元素相等 II--前缀和
最少移动次数使数组元素相等 II给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。 您可以假设数组的长度最多为10000。例如:输入:[1,2,3]输出:2说明:只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1):[1,2,3] => [2,2,3] => [2,2,2]题解排序后计算前缀和,贪心策略,我们从左到右遍历,假设把所有元素变成nums[i],那么左边的元素肯定都是加,右边的元素都是减,.原创 2021-08-17 20:50:51 · 101 阅读 · 0 评论 -
LeetCode 363. 矩形区域不超过 K 的最大数值和--前缀和+set查询
矩形区域不超过 K 的最大数值和给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。题目数据保证总会存在一个数值和不超过 k 的矩形区域。示例 1:输入:matrix = [[1,0,1],[0,-2,3]], k = 2输出:2解释:蓝色边框圈出来的矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。示例 2:输入:matrix = [[2,2,-1]], k =.原创 2021-08-17 17:05:18 · 91 阅读 · 0 评论 -
LeetCode 剑指 Offer II 010. 和为 k 的子数组--前缀和+map
剑指 Offer II 010. 和为 k 的子数组给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2解释: 此题 [1,1] 与 [1,1] 为两种不同的情况示例 2 :输入:nums = [1,2,3], k = 3输出: 2提示:1 <= nums.length <= 2 * 104-1000 <= nums[i] <= 1000-107 <= k原创 2021-08-16 15:43:40 · 131 阅读 · 0 评论 -
LeetCode 剑指 Offer II 008. 和大于等于 target 的最短子数组--二分+前缀和
剑指 Offer II 008. 和大于等于 target 的最短子数组给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:targ原创 2021-08-16 11:10:48 · 131 阅读 · 0 评论 -
LeetCode 面试题 17.24. 最大子矩阵--前缀和
面试题 17.24. 最大子矩阵给定一个正整数、负整数和 0 组成的 N × M 矩阵,编写代码找出元素总和最大的子矩阵。返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。若有多个满足条件的子矩阵,返回任意一个均可。注意:本题相对书上原题稍作改动示例:输入:[[-1,0],[0,-1]]输出:[0,1,0,1]解释:输入中标粗的元素即为输出所表示的矩阵说明:1 <= matrix.l原创 2021-08-15 23:14:41 · 166 阅读 · 0 评论 -
LeetCode 面试题 17.05. 字母与数字--前缀和+map
面试题 17.05. 字母与数字给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。返回该子数组,若存在多个最长子数组,返回左端点下标值最小的子数组。若不存在这样的数组,返回一个空数组。示例 1:输入: [“A”,“1”,“B”,“C”,“D”,“2”,“3”,“4”,“E”,“5”,“F”,“G”,“6”,“7”,“H”,“I”,“J”,“K”,“L”,“M”]输出: [“A”,“1”,“B”,“C”,“D”,“2”,“3”,“4”,“E”,“5”,“F”,“G”,“原创 2021-08-15 22:39:58 · 139 阅读 · 0 评论 -
LeetCode 剑指 Offer 66. 构建乘积数组--前缀和
剑指 Offer 66. 构建乘积数组给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]提示:所有元素乘积之和不会溢出 32 位整数a.length <= 100000题解比较简单,直接看代码。AC代码cla原创 2021-08-15 21:56:23 · 81 阅读 · 0 评论 -
LeetCode 1930. 长度为 3 的不同回文子序列--前缀和
长度为 3 的不同回文子序列给你一个字符串 s ,返回 s 中 长度为 3 的不同回文子序列 的个数。即便存在多种方法来构建相同的子序列,但相同的子序列只计数一次。回文 是正着读和反着读一样的字符串。子序列 是由原字符串删除其中部分字符(也可以不删除)且不改变剩余字符之间相对顺序形成的一个新字符串。例如,"ace" 是 "abcde" 的一个子序列。示例 1:输入:s = “aabca”输出:3解释:长度为 3 的 3 个回文子序列分别是:“aba” (“aabca” 的子序列).原创 2021-08-14 15:39:53 · 155 阅读 · 0 评论 -
LeetCode 1915. 最美子字符串的数目--字符串编码+前缀和+map
最美子字符串的数目如果某个字符串中 至多一个 字母出现 奇数 次,则称其为 最美 字符串。例如,"ccjjc" 和 "abab" 都是最美字符串,但 "ab" 不是。给你一个字符串 word ,该字符串由前十个小写英文字母组成(‘a’ 到 ‘j’)。请你返回 word 中 最美非空子字符串 的数目。如果同样的子字符串在 word 中出现多次,那么应当对 每次出现 分别计数。子字符串 是字符串中的一个连续字符序列。示例 1:输入:word = “aba”输出:4解释:4 个最美子字符串如.原创 2021-08-14 15:15:27 · 289 阅读 · 0 评论 -
LeetCode 1894. 找到需要补充粉笔的学生编号--前缀和
找到需要补充粉笔的学生编号一个班级里有 n 个学生,编号为 0 到 n - 1 。每个学生会依次回答问题,编号为 0 的学生先回答,然后是编号为 1 的学生,以此类推,直到编号为 n - 1 的学生,然后老师会重复这个过程,重新从编号为 0 的学生开始回答问题。给你一个长度为 n 且下标从 0 开始的整数数组 chalk 和一个整数 k 。一开始粉笔盒里总共有 k 支粉笔。当编号为 i 的学生回答问题时,他会消耗 chalk[i] 支粉笔。如果剩余粉笔数量 严格小于 chalk[i] ,那么学生 i.原创 2021-08-13 22:38:38 · 211 阅读 · 0 评论 -
LeetCode 1838. 最高频元素的频数--前缀和+双指针
最高频元素的频数元素的 频数 是该元素在一个数组中出现的次数。给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。示例 1:输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元素,频数是 3 。示例 2:输入:nu.原创 2021-08-13 22:15:57 · 101 阅读 · 0 评论 -
LeetCode 1856. 子数组最小乘积的最大值--单调栈+前缀和
子数组最小乘积的最大值一个数组的 最小乘积 定义为这个数组中 最小值 乘以 数组的 和 。比方说,数组 [3,2,5] (最小值是 2)的最小乘积为 2 * (3+2+5) = 2 * 10 = 20 。给你一个正整数数组 nums ,请你返回 nums 任意 非空子数组 的最小乘积 的 最大值 。由于答案可能很大,请你返回答案对 109 + 7 取余 的结果。请注意,最小乘积的最大值考虑的是取余操作 之前 的结果。题目保证最小乘积的最大值在 不取余 的情况下可以用 64 位有符号整数 保存.原创 2021-08-11 22:51:07 · 324 阅读 · 0 评论 -
LeetCode 1712. 将数组分成三个子数组的方案数--二分+前缀和
将数组分成三个子数组的方案数我们称一个分割整数数组的方案是 好的 ,当它满足:数组被分成三个 非空 连续子数组,从左至右分别命名为 left , mid , right 。left 中元素和小于等于 mid 中元素和,mid 中元素和小于等于 right 中元素和。给你一个 非负 整数数组 nums ,请你返回 好的 分割 nums 方案数目。由于答案可能会很大,请你将结果对 109 + 7 取余后返回。示例 1:输入:nums = [1,1,1]输出:1解释:唯一一种好的分割方案是将.原创 2021-08-11 22:34:22 · 309 阅读 · 0 评论 -
LeetCode 1546. 和为目标值且不重叠的非空子数组的最大数目--前缀和+map
和为目标值且不重叠的非空子数组的最大数目给你一个数组 nums 和一个整数 target 。请你返回 非空不重叠 子数组的最大数目,且每个子数组中数字和都为 target 。示例 1:输入:nums = [1,1,1,1,1], target = 2输出:2解释:总共有 2 个不重叠子数组(加粗数字表示) [1,1,1,1,1] ,它们的和为目标值 2 。示例 2:输入:nums = [-1,3,5,1,4,2,-9], target = 6输出:2解释:总共有 3 个子数组和为 6.原创 2021-08-10 16:48:39 · 213 阅读 · 0 评论 -
LeetCode 1524. 和为奇数的子数组数目--前缀和取模
和为奇数的子数组数目给你一个整数数组 arr 。请你返回和为 奇数 的子数组数目。由于答案可能会很大,请你将结果对 10^9 + 7 取余后返回。示例 1:输入:arr = [1,3,5]输出:4解释:所有的子数组为 [[1],[1,3],[1,3,5],[3],[3,5],[5]] 。所有子数组的和为 [1,4,9,3,8,5].奇数和包括 [1,9,3,5] ,所以答案为 4 。示例 2 :输入:arr = [2,4,6]输出:0解释:所有子数组为 [[2],[2,4],[2.原创 2021-08-10 16:22:19 · 323 阅读 · 0 评论 -
LeetCode 1310. 子数组异或查询--前缀和
子数组异或查询有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor … xor arr[Ri])作为本次查询的结果。并返回一个包含给定查询 queries 所有结果的数组。示例 1:输入:arr = [1,3,4,8], queries = [[0,1],[1,2],[0,3],[3,3]]输出:[2,7,14,.原创 2021-08-06 16:28:06 · 78 阅读 · 0 评论 -
LeetCode 1895. 最大的幻方--前缀和
最大的幻方一个 k x k 的 幻方 指的是一个 k x k 填满整数的方格阵,且每一行、每一列以及两条对角线的和 全部相等 。幻方中的整数 不需要互不相同 。显然,每个 1 x 1 的方格都是一个幻方。给你一个 m x n 的整数矩阵 grid ,请你返回矩阵中 最大幻方 的 尺寸 (即边长 k)。示例 1:输入:grid = [[7,1,4,5,6],[2,5,1,6,4],[1,5,4,3,2],[1,2,7,3,4]]输出:3解释:最大幻方尺寸为 3 。每一行,每一列以及两条对角.原创 2021-08-06 16:15:14 · 175 阅读 · 0 评论 -
LeetCode 1371. 每个元音包含偶数次的最长子字符串--哈希化+前缀和
每个元音包含偶数次的最长子字符串给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 ‘a’,‘e’,‘i’,‘o’,‘u’ ,在子字符串中都恰好出现了偶数次。示例 1:输入:s = “eleetminicoworoep”输出:13解释:最长子字符串是 “leetminicowor” ,它包含 e,i,o 各 2 个,以及 0 个 a,u 。示例 2:输入:s = “leetcodeisgreat”输出:5解释:最长子字符串是 “leetc” ,其中包含 2.原创 2021-08-05 16:53:25 · 149 阅读 · 0 评论 -
LeetCode 1314. 矩阵区域和--前缀和
矩阵区域和给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和:i - k <= r <= i + k,j - k <= c <= j + k 且(r, c) 在矩阵内。示例 1:输入:mat = [[1,2,3],[4,5,6],[7,8,9]], k = 1输出:[[12,21,16],[27,45,33],[24,39,28]]示例 .原创 2021-08-05 16:34:35 · 183 阅读 · 0 评论 -
LeetCode 974. 和可被 K 整除的子数组--前缀和+数字取模
和可被 K 整除的子数组给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1 <= A.length <= 30000-10000 <= A[i].原创 2021-08-04 20:43:50 · 159 阅读 · 0 评论 -
LeetCode 525. 连续数组--前缀和+map
连续数组给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。提示:1 <= nums.length <= 105nums[i] 不是 0 就是 1题解累计.原创 2021-08-04 20:30:28 · 112 阅读 · 0 评论 -
LeetCode 1292. 元素和小于等于阈值的正方形的最大边长--前缀和
元素和小于等于阈值的正方形的最大边长1292. 元素和小于等于阈值的正方形的最大边长给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold。请你返回元素总和小于或等于阈值的正方形区域的最大边长;如果没有这样的正方形区域,则返回 0 。示例 1:输入:mat = [[1,1,3,2,4,3,2],[1,1,3,2,4,3,2],[1,1,3,2,4,3,2]], threshold = 4输出:2解释:总和小于或等于 4 的正方形的最大边长为 2,如图所示。示例 2:.原创 2021-08-03 20:47:09 · 174 阅读 · 1 评论 -
LeetCode 1685. 有序数组中差绝对值之和--前缀和
有序数组中差绝对值之和给你一个 非递减 有序整数数组 nums 。请你建立并返回一个整数数组 result,它跟 nums 长度相同,且result[i] 等于 nums[i] 与数组中所有其他元素差的绝对值之和。换句话说, result[i] 等于 sum(|nums[i]-nums[j]|) ,其中 0 <= j < nums.length 且 j != i (下标从 0 开始)。示例 1:输入:nums = [2,3,5]输出:[4,3,5]解释:假设数组下标从 0 开始.原创 2021-08-03 20:06:29 · 194 阅读 · 0 评论 -
LeetCode 1208. 尽可能使字符串相等---前缀和+二分
尽可能使字符串相等给你两个长度相同的字符串,s 和 t。将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] - t[i]| 的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,则返回可以转化的最大长度。如果 s 中没有子字符串可以转化成 t 中对应的子字符串,则返回 0.原创 2021-08-02 22:26:19 · 207 阅读 · 0 评论 -
LeetCode 1074. 元素和为目标值的子矩阵数量--map+前缀和
元素和为目标值的子矩阵数量给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量。子矩阵 x1, y1, x2, y2 是满足 x1 <= x <= x2 且 y1 <= y <= y2 的所有单元 matrix[x][y] 的集合。如果 (x1, y1, x2, y2) 和 (x1’, y1’, x2’, y2’) 两个子矩阵中部分坐标不同(如:x1 != x1’),那么这两个子矩阵也不同。示例 1:输入:matrix = [[0,1.原创 2021-08-02 21:46:25 · 136 阅读 · 0 评论 -
LeetCode 560. 和为K的子数组 -- map+前缀和
和为K的子数组给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。题解因为是子数组,所以无非两种情况,前缀和sum[x]为k或者前缀和sum[x]-sum[y]=k。然后我们用map储存下每个前.原创 2021-08-02 21:22:36 · 110 阅读 · 0 评论