
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在上面的公式中,随着指针的移动,距离必然越来越小,那么我们想要容纳的水量最多,就得想办法提高指针的高度,于是我们在移动双指针时,就应该移动高度较小的那个指针。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。头尾指针,一个公式:容纳的水量 = 两个指针的距离 * min(两个指针的高度)轴共同构成的容器可以容纳最多的水。找
计数,互为字母异位词的两个字符串包含的字母相同,故可以将每个字符串中出现的字母次数以字符串的形式表示,作为哈希表的Key值。由于只包含小写字母,故用大小为26的数组即可。对字符串数组中的每个字符串排序,以这个排序作为Key值,当两个字符串的排序相同时,存进同一个列表。给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。在 strs 中没有字符串可以通过重新排列来形成。是
先排序,避免重复处理元素;再遍历三元组中的第一个值,第二个和第三个值使用双指针寻找。使用双指针,一头一尾,如果此时寻找的第二个值与前一个第二个值相同,则跳过;如果此时第一个、第二个值和第三个值相加大于0,则移动尾指针;如果此时头尾指针相遇,则直接跳出循环(找完了!如果此时相加等于0,则存入答案输出。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答
3.用differ记录s和p的差值(记录count中所有非0数的数量),当differ = 0 时,意味着此时窗口中的字母和p是字母异位词,记录答案。起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是
非常好,那么我们就可以在遍历数组计算每个下标前缀和的时候,计算target = pre[j] - k,如果已经记录的前缀和pre[i] == target,就说明对于pre[j]而言,找到了一个子数组[i....j-1]如果已知每个下标的前缀和,那么[i....j-1]这个子数组的和为k,则意味着pre[j] - pre[i] == k,左右变换一下可以得到:pre[i] = pre[j] - k
3.遍历前缀和,用min_pre记录最小的前缀和的值,用当前的前缀和 - min_pre,用max()更新答案,用min()更新min_pre。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。再次重申:数组无序——前缀和;数组有序——双指针、滑动窗口。连续子数组 [4,-1,2,1] 的和最大,为 6。2.要求最大的子数组和:即求最大的前缀和之差。是数组中的一个连续部
(2)intervals[i][1] > intervals[i+1][0]时,存在重叠,且合并区间的右端点为两者中较大的值。(1)intervals[i][1] < intervals[i+1][0]时,不可能重叠,直接存进答案。二维数组中,按照数组中第一个元素排序:sort(key = lambda x : x[0])区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].区间 [
优化:如果要想在空间复杂度为O(1)的情况下实现,则无需使用前缀数组、后缀数组,直接存进ans。(1)从前往后,遍历数组,对当前的每一个数计算前缀乘积。(2)从后往前,遍历数组,对当前的每一个数计算后缀乘积。之中任意元素的全部前缀元素和后缀的乘积都在。(3)答案 = 前缀乘积 * 后缀乘积。之外其余各元素的乘积。时间复杂度内完成此题。
3.优化:先单独处理原数组的第一行、第一列(用bool变量标识是否需要置零),再利用原数组的第一行和第一列存需要置零的行和列——空间复杂度O(1)2.优化:将ans拆分成两个数组:一个存需要置零的行,一个存需要置零的列,分别遍历这两个数组,将原数组置零——空间复杂度O(m + n)1.非常直观的想法:遍历矩阵,用一个ans数组存矩阵中的零存在的位置,再遍历ans,找到对应行、列,置零——空间复杂度
旋转图像,这意味着你需要直接修改输入的二维矩阵。请你将图像顺时针旋转 90 度。转置:对上三角(i < j)每一个元素的行列交换。一个简单神奇的思路,先转置后反转每一行。反转:row.reverse()使用另一个矩阵来旋转图像。








