算法第三十一天-区域和检索【数组不可变】

区域和检索-数组不可变

题目要求

在这里插入图片描述

解题思路

为方便描述,把 n u m s nums nums 记作 a a a
对于数组 a a a,定义它的前缀和
s [ 0 ] = 0 s [ 1 ] = a [ 0 ] s [ 2 ] = a [ 0 ] + a [ 1 ] ⋮ s [ i ] = a [ 0 ] + a [ 1 ] + ⋯ + a [ i − 1 ] = ∑ j = 0 i − 1 nums [ j ] s [ i + 1 ] = a [ 0 ] + a [ 1 ] + ⋯ + a [ i − 1 ] + a [ i ] = ∑ j = 0 i nums [ j ] ⋮ s [ n ] = a [ 0 ] + a [ 1 ] + ⋯ + a [ n − 1 ] \begin{aligned} s[0] =\ &0\\ s[1] =\ &a[0]\\ s[2] =\ &a[0]+a[1]\\ &\vdots\\ s[i] =\ &a[0] + a[1] + \cdots + a[i-1] = \sum\limits_{j=0}^{i-1}\textit{nums}[j]\\ s[i+1] =\ &a[0] + a[1] + \cdots + a[i-1] + a[i] = \sum\limits_{j=0}^{i}\textit{nums}[j]\\ &\vdots\\ s[n] =\ &a[0] + a[1] + \cdots + a[n-1] \end{aligned} s[0]= s[1]= s[2]= s[i]= s[i+1]= s[n]= 0a[0]a[0]+a[1]a[0]+a[1]++a[i1]=j=0i1nums[j]a[0]+a[1]++a[i1]+a[i]=j=0inums[j]a[0]+a[1]++a[n1]

根据这个定义,有

s [ i + 1 ] = s [ i ] + a [ i ] s[i+1]=s[i]+a[i] s[i+1]=s[i]+a[i]
示例中的数组 [ − 2 , 0 , 3 , − 5 , 2 , − 1 ] [−2,0,3,−5,2,−1] [2,0,3,5,2,1],对应的前缀和数组 s = [ 0 , − 2 , − 2 , 1 , − 4 , − 2 , − 3 ] s=[0,−2,−2,1,−4,−2,−3] s=[0,2,2,1,4,2,3]
通过前缀和,我们可以把连续子数组的元素和转换成两个前缀和的差, a [ l e f t ] a[left] a[left] a [ r i g h t ] a[right] a[right]的元素和等于

∑ j = left right a [ j ] = ∑ j = 0 right a [ j ] − ∑ j = 0 left − 1 a [ j ] = s [ right + 1 ] − s [ left ] \sum_{j=\textit{left}}^{\textit{right}}\textit{a}[j] = \sum\limits_{j=0}^{\textit{right}}\textit{a}[j] - \sum\limits_{j=0}^{\textit{left}-1}\textit{a}[j] = \textit{s}[\textit{right}+1] - \textit{s}[\textit{left}] j=leftrighta[j]=j=0righta[j]j=0left1a[j]=s[right+1]s[left]

有了这个式子,示例中子数组 [ 3 , − 5 , 2 , − 1 ] [3,−5,2,−1] [3,5,2,1]的和,就可以 O ( 1 ) O(1) O(1)地用 s [ 6 ] − s [ 2 ] = − 3 − ( − 2 ) = − 1 s[6]−s[2]=−3−(−2)=−1 s[6]s[2]=3(2)=1算出来。

复杂度分析

  • 时间复杂度:初始化 O ( n ) O(n) O(n),其中 n n n n u m s nums nums的长度。 s u m R a n g e O ( 1 ) sumRange O(1) sumRangeO(1)
  • 空间复杂度: O ( n ) O(n) O(n)

参考

灵茶山艾府

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

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

相关文章

matplotlib使用总结1

matplotlib 是一个用于创建静态、动态和交云图的 Python 绘图库。它可以用于 Python 脚本、Python 和 IPython shell、Jupyter 笔记本、web 应用服务器以及四个图形用户界面工具包中。matplotlib 尝试让简单的事情更简单,让困难的事情成为可能。你可以生成线图、柱状…

借记卡年费和小额账户管理费,以及换卡面不换号

文章目录 年费和小额账户管理费减免政策:每家银行均可有一张借记卡享受双免政策减免政策:代发工资、低保、社保、医保、失业保险、养老金、退休金、住房公积金等账户减免政策:二、三类电子账户一类卡、二类卡和三类卡二、三类电子账户不收取年…

Rust字符串深入理解

一、概述 Rust是一种系统级语言,进行操作系统等底层应用开发,同时又具合理的抽象处理能力。在进行Rust编程时,字符串处理是程序员经常碰到的工作。本文深入解析Rust语言中字符串的使用,包括 static string,String与&a…

LeetCode 2578.最小和分割

给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。 num…

x86 32 64 Arm这些听过但不懂,都是什么?是架构还是系统?一文梳理

x86 听过吗?64位操作系统知道吧 和x86什么关系32和64都是什么东西?曾经的我也一头雾水,今天我才来整理一下,惭愧惭愧!今天带着沉重的心情来梳理一下学习内容吧 如果你很熟悉很了解计算机的话,应该知道&…

深度分析:社科赛斯——穿越市场周期二十二年的考研机构

近日,一份由有关部门发布的统计数据引发了广泛关注:在中国,中小企业的平均寿命仅有3.7年,而小微企业更是不到3年。这一数字凸显了中小企业所面临的挑战与困境。然而,在这个充满风险与变化的商业环境中,社科…

pytorch 鲜见操作

对两个 tensor 做逻辑运算,比如 & (与) import torch# 定义两个张量 tensor_a torch.tensor([1, 0, 1, 0], dtypetorch.bool) tensor_b torch.tensor([1, 1, 0, 0], dtypetorch.bool)# 执行逻辑与操作 result tensor_a & tensor_bprint(result)结果输出…

U-Net代码复现–train.py

本文记录自己的学习过程,内容包括: 代码解读:Pytorch-UNet 深度学习编程基础:Pytorch-深度学习(新手友好) UNet论文解读:医学图像分割:U_Net 论文阅读 数据:https://hack…

中霖教育:二级建造师证书好考吗?

在建筑行业,二级建造师资格认证相较于一级建造师资格,难度会低一些。考试科目共有三科,考生需要在连续两个年度内通过所有科目的考试才为通过。 对于具备建筑相关基础和实践经验的考生来说,二级建造师的考试难度会低一些。根据往…

云扩展要求(云租户)

层面控制点四级三级二级安全 区域 边界访问控制应在虚拟化网络边界部署访问控制机制,并设置访问控制规则;应在虚拟化网络边界部署访问控制机制,并设置访问控制规则;应在虚拟化网络边界部署访问控制机制,并设置访问控制…

30天拿下Rust之错误处理

概述 在软件开发领域,对错误的妥善处理是保证程序稳定性和健壮性的重要环节。Rust作为一种系统级编程语言,以其对内存安全和所有权的独特设计而著称,其错误处理机制同样体现了Rust的严谨与实用。在Rust中,错误处理通常分为两大类&…

KUKA机器人自动回原点程序

一、创建全局变量点 创建两个全局变量分别用于储存机器人的笛卡尔姿态与关节角姿态。 打开System文件夹中的config文件创建全局变量的点位。 在USER GROBALS用户自定义变量Userdefined variables下创建一个E6POS类型的点位,一个E6AXIS类型的点位。 二、创建回原点…

webRtc麦克风摄像头检测

最近在做webRtc相关音视频项目&#xff0c;碰到了很多用户不知道自己设备是否被支持发起webRtc&#xff0c;所以特意总结相关实用方法&#xff1b; HTML /*id方便一会把媒体流赋值过去, autoPlay: 自动播放 */ <audio id"devDetectionMicroRef" autoPlay><…

基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

经典面试智力题总结

常见面试智力题总结 本部分主要是笔者在练习常见面试智力题所做的笔记&#xff0c;如果出现错误&#xff0c;希望大家指出&#xff01; 常见智力题 时针与分针夹角度数问题&#xff1f; 分析&#xff1a; 当时间为 m 点 n 分时&#xff0c;其时针与分针夹角的度数为多少&…

React状态管理Mobx

1 https://zh.mobx.js.org/README.html 2 https://juejin.cn/post/7046710251382374413 3 https://cn.mobx.js.org/refguide/observable.html ​​mobx入门基础教程-慕课网​​ ​​Mobx学习 - 掘金​​ 十分钟入门 MobX & React ​​十分钟入门 MobX & React​​…

警惕!On Hold被踢,2本1区,5本Springer旗下,共8本SCI/SSCI被剔除!

毕业推荐 SSCI&#xff08;ABS一星&#xff09; • 社科类&#xff0c;3.0-4.0&#xff0c;JCR2区&#xff0c;中科院3区 • 13天录用&#xff0c;28天见刊&#xff0c;13天检索 SCIE&#xff1a; • 计算机类&#xff0c;6.5-7.0&#xff0c;JCR1区&#xff0c;中科院2区…

农业气象站在农业生产中的应用—气象科普

农业气象站在农业生产中发挥着至关重要的作用。它能够有效监测和记录农田环境中的各类气象要素&#xff0c;为农民提供科学、准确的气象数据&#xff0c;帮助他们更好地掌握天气变化规律&#xff0c;从而合理安排农业生产活动。 首先&#xff0c;农业气象站能够实时提供温度、…

使用 Clojure 进行 OpenCV 开发简介

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;如何将OpenCV Java 与Eclipse结合使用 下一篇&#xff1a; OpenCV4.9.0在Android 开发简介 ​警告 本教程可以包含过时的信息。 从 OpenCV 2.4.4 开始&#xff0c;OpenCV 支持…

Hibernate相关问题

文章目录 Hibernate是如何简化JDBC操作的&#xff1f;解释Hibernate的ORM概念Hibernate中的Session和Transaction有什么区别&#xff1f;Session&#xff1a;Transaction&#xff1a; Hibernate有哪些缓存类型&#xff1f;它们是如何工作的&#xff1f;一级缓存&#xff08;Fir…