【Python3】【力扣题】303. 区域和检索 - 数组不可变

【力扣题】题目描述:

【Python3】代码:

1、解题思路:从列表中获取指定下标的所有元素,求和。

知识点:列表[start:end]:切片。从列表中获取起始下标start(含)到结束下标end(不含)的元素。

              sum(...):求和,返回一个数值。

class NumArray:

    def __init__(self, nums: List[int]):
        self.nums = nums

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

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

2、解题思路:一个新列表,每个下标记录数组中从0到该下标所有元素的和,指定下标范围的和只需计算结束下标对应的和减去起始下标之前的和。例如:从i到j的和,计算从0到j的和减去从0到i-1的和。

知识点:[0]:列表中只有一个元素0。

               列表.append(...):往列表中添加元素。

               列表[-1]:从列表中获取最后一个元素。

               列表[num]:从列表中获取指定下标num对应的元素。

注解:新列表中第一个元素是0,第二个元素开始才依次是数组中从0到n元素和。

class NumArray:

    def __init__(self, nums: List[int]):
        self.total = [0]

        for x in nums:
            self.total.append(self.total[-1] + x)

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

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

3、解题思路:类似2,用itertools模块accumulate(),每个下标记录数组中从0到该下标所有元素的和。

知识点:itertools.accumulate(可迭代对象):返回一个迭代器,累加和。

              list(...):转为列表。

注解:accumulate()返回的迭代器,从第一个元素开始依次是数组中从0到n元素和。

class NumArray:

    def __init__(self, nums: List[int]):
        from itertools import accumulate
        self.total = list(accumulate(nums))

    def sumRange(self, left: int, right: int) -> int:
        return self.total[right] if left == 0 else self.total[right] - self.total[left-1]

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决:虚拟机远程连接失败

问题 使用FinalShell远程连接虚拟机的时候连接不上 发现 虚拟机用的VMware,Linux发行版是CentOs 7,发现在虚拟机中使用ping www.baidu.com是成功的,但是使用FinalShell远程连接不上虚拟机,本地网络也ping不通虚拟机&#xff0c…

腾讯云轻量级服务器和云服务器什么区别?轻量服务器是干什么用的

随着互联网的迅速发展,服务器成为了许多人必备的工具。然而,面对众多的服务器选择,我们常常会陷入纠结之中。在这篇文章中,我们将探讨轻量服务器和标准云服务器的区别,帮助您选择最适合自己需求的服务器。 腾讯云双十…

Swagger(3):Swagger入门案例

1 编写SpringBoot项目新建一个Rest请求控制器。package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMap…

Flask 接口

目录 前言 代码实现 简单接口实现 执行其它程序接口 携带参数访问接口 前言 有时候会想着开个一个接口来访问试试,这里就给出一个基础接口代码示例 代码实现 导入Flask模块,没安装Flask 模块需要进行 安装:pip install flask 使用镜…

腾讯云服务器怎么样好用吗?腾讯云服务器性能评测

近年来,腾讯云作为一家领先的云服务提供商,备受关注。尤其是最近两年,腾讯云在优惠活动上的力度非常大,被誉为良心云。其优惠政策吸引了越来越多的用户选择腾讯云作为他们的云服务提供商。 腾讯云双十一领9999代金券 https://111…

GamingTcUI.dll丢失修复,最全面的GamingTcUI.dll修复指南

热衷于电脑游戏的用户可能会在启动游戏时遇到这样的错误信息:"无法启动应用,因为找不到GamingTcUI.dll"。那么这个GamingTcUI.dll文件是什么?如何解决这个问题呢?我们将在本文中进行详细讲解。 一.GamingTcUI.dll是什么…

Activiti,Apache camel,Netflex conductor对比,业务选型

Activiti,Apache camel,Netflex conductor对比,业务选型 1.activiti是审批流,主要应用于人->系统交互,典型应用场景:请假,离职等审批 详情可见【精选】activti实际使用_activiti通过事件监听器实现的优势_记录点滴…

OSS服务和MinIO存储做一个区分解析

日落金山,明天我们继续… 什么是OSS服务和MinIO存储 OSS(Object Storage Service)和MinIO都是对象存储服务,但它们有一些区别。以下是对它们的简要分析: 1. 部署和管理: OSS: 由阿里云提供&a…

Leetcode—141.环形链表【简单】

2023每日刷题(三十三) Leetcode—141.环形链表 快慢指针算法思想 关于快慢指针为什么能检测出环,可以这么思考。 假设存在一个环: 慢指针进入环后,快指针和慢指针之间相距为d,每一次移动,d都会缩小1&…

C++模版初阶

泛型编程 如下的交换函数中,它们只有类型的不同,应该怎么实现一个通用的交换函数呢? void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp…

软件工程师参加技术峰会,带来的价值,你想象不到!

参加技术大会是软件开发人员了解行业最新技术和未来发展趋势的重要途径。 在技术大会上,来自世界各地的专家、学者和企业代表会分享他们的最新研究成果、技术创新和趋势分析。这对于软件开发人员来说,是一个宝贵的学习机会,可以帮助他们拓宽…

【STM32】DMA(直接存储器访问)

一、DMA本质 在ADC中使用FIFO(先进先出),当FIFO快满的时候,产生一个中断。在中断的时候将数据传输到SRAM,但是此时还是需要CPU的参与,但是CPU就不会一直在等待。【但是这个方法还是不能完全解决问题】 此时…

josef约瑟 时间继电器 ST3PA-A AC220V 带插座PF085A

ST3P系列时间继电器适用于交流50Hz或60Hz,额定电压380V及以下或直流24V的控制电路中作廷时元件,按预定的时间接通或分断电路。具有体积小,精度高,延时范围宽,可与JSZ3系列继电器等同互换使用。 系列型号 ST3PF-2Z(JSZ3F-2Z) 5s AC110V ST3PF(JSZ3F) 10s AC48V ST3PC-1(AH3-3)…

循环队列(出队、入队、判空、长度、遍历、取头)(数据结构与算法)

循环队列 涉及到移动、赋值原队列参数的函数参数列表如front,rear,都最好别用&引用,否则会修改原队列中的地址和数值如:SqQueue &Q 使用SqQueue Q作参数列表时,函数引入的只是一份副本,不会修改原队…

Jenkins持续集成

1. 持续集成及Jenkins介绍 1.1. 软件开发生命周期 软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了计划、开发、测试和部署过程的集合。如下图所示 : 需求分析 这是生命周期的第一阶段,根据…

文件加密软件哪个好用丨真心推荐丨良心建议

在保护企业文件和数据方面,文件加密软件是一种非常重要的工具。以下是我推荐好用的文件加密软件,以及我的良心建议。 一、WinRAR。WinRAR是一款免费的文件压缩和解压缩工具,同时也提供了强大的文件加密功能。使用WinRAR可以轻松地加密文件夹和…

Selenium安装WebDriver(含116/117/118/119)

1、确认浏览器的版本 在浏览器的地址栏,输入chrome://version/,回车后即可查看到对应版本 2、找到对应的chromedriver版本 2.1 114及之前的版本可以通过点击下载chromedriver,根据版本号(只看大版本)下载对应文件 2.2 116版…

Kubernetes1.28.X 集群安装

1、环境准备 准备2台虚拟机,安装集群一律使用内网ip通信,相关配置文件一律配置内网ip。 ip别名用途192.168.0.193kubernetes-master.openlab.cn主节点,harbor仓库192.168.0.194kubernetes-work.openlab.cnwork节点 hostnamectl set-hostna…

为关键信息基础设施安全助力!持安科技加入关保联盟

近日,中关村华安关键信息基础设施安全保护联盟发布了其新一批的会员单位,零信任办公安全代表企业持安科技成功加入,与联盟企业共同为关键信息基础设施提供各类支撑和保障。 中关村华安关键信息基础设施安全保护联盟由北京市科学技术委员会、中…