首页 > 其他分享 >leetcode(32)前缀和系列题目

leetcode(32)前缀和系列题目

时间:2022-10-28 16:23:13浏览次数:69  
标签:pre 前缀 nums int 32 sum self stack leetcode

303. 区域和检索 - 数组不可变

记录前i个元素的和,因此sum[left,right + 1]=pre[right + 1]-pre[left]

class NumArray:

    def __init__(self, nums: List[int]):
        self.pre_sum = [0]
        for i in range(len(nums)):
            self.pre_sum.append(self.pre_sum[i] + nums[i])

    def sumRange(self, left: int, right: int) -> int:
        return self.pre_sum[right + 1] - self.pre_sum[left]


# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(left,right)

1856. 子数组最小乘积的最大值

前缀和+单调栈

class Solution:
    def maxSumMinProduct(self, nums: List[int]) -> int:
        pre_sum = [0]
        for i in range(len(nums)):
            pre_sum.append(nums[i] + pre_sum[i])
        res = 0
        nums = [-inf] + nums + [-inf]
        stack = []
        for r, n in enumerate(nums):
            while stack and nums[stack[-1]] > n:
                i = stack.pop()
                # print(nums[i])
                # print(nums[stack[-1]:r])
                cur = nums[i] * (pre_sum[r - 1] - pre_sum[stack[-1]])  # 注意r-1
                res = max(res, cur)
            stack.append(r)
        return res % (10 ** 9 + 7)

标签:pre,前缀,nums,int,32,sum,self,stack,leetcode
From: https://www.cnblogs.com/ttyangY77/p/16836445.html

相关文章

  • leetcode-1446-easy
    ConsecutiveCharactersThepowerofthestringisthemaximumlengthofanon-emptysubstringthatcontainsonlyoneuniquecharacter.Givenastrings,retur......
  • leetcode-680-easy
    ValidPalindromeIIGivenastrings,returntrueifthescanbepalindromeafterdeletingatmostonecharacterfromit.Example1:Input:s="aba"Output......
  • Leetcode第907题:子数组的最小值之和(Sum of subarrays minimums )
    解题思路既然我们不能先遍历区间,然后找最小值,那么我们不如顺序倒过来,对于每个值,我们找有多少区间里面,它是最小值。对于一个数字A[i]来说,如果在某个区间[j,k]里面它......
  • STM32地址划分
    @目录前言地址空间大小MCU存储图前言STM32地址空间以及划分整理。地址空间大小STM32的CPU是32位的,称为32位操作系统,地址寻址空间表示最大为0xFFFFFFFF(\(2^{32}\))的内存......
  • 零零信安-D&D数据泄露报警日报【第32期】
    01概述2022.10.27共发现匿名网络资讯信息188,046条;最近7天共发现匿名网络资讯信息556,982 条,同比增长-37.5% ​;最近30天共发现匿名网络资讯信息2,538,330  条。D&D评论:......
  • LC322---零钱兑换
    ​​322.零钱兑换​​难度中等1087给定不同面额的硬币​​coins​​​和一个总金额​​amount​​​。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没......
  • 1032 挖掘机技术哪家强(测试点2的坑)
    题目: 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。 输入格式: 输入在第1行给出不超过 10......
  • 2017蓝桥杯 K倍区间 前缀和+同余定理
    2017蓝桥杯K倍区间前缀和+同余定理给定一个长度为的数列,。如果其中一段连续的子序列之和是的倍数,我们就称这个区间是倍区间。你能求出数列中总共有多少个倍区间吗?看到“......
  • 《STM32MP1 M4裸机HAL库开发指南》第六章 新建MDK工程
    第六章新建MDK工程​本教程所有例程都是在MDK下编写、编译和调试的,因此首先要学习的就是如何新建MDK工程,本章就来讲解一下最基本的MDK工程创建方法,工程创建成功以后用汇编......
  • T287328 求和(正经题目)(有数据) 题解
    题目30分暴力:#include<bits/stdc++.h>#definefor1(i,a,b)for(inti=a;i<=b;i++)#definelllonglongusingnamespacestd;llgcd(lla,llb){ if(b==0)retu......