区域和检索算法(leetcode第303题)

题目描述:

给定一个整数数组  nums,处理以下类型的多个查询:计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right
实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象
int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 right 两点(也就是 nums[left] + nums[left + 1] + ... + nums[right] )示例 1:输入:
["NumArray", "sumRange", "sumRange", "sumRange"]
[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
输出:
[null, 1, -1, -3]解释:
NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)
numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1)) 
numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))提示:1 <= nums.length <= 104
-105 <= nums[i] <= 105
0 <= i <= j < nums.length
最多调用 104 次 sumRange 方法

算法:

思路:

为了减少花费的时间,可以直接使用sums得出区域和,故可以用

sums[j+1]-sums[i]

得到索引 i 到 j 的区域和

代码实现:
# include<stdlib.h>
typedef struct {int* sums;
} NumArray;NumArray* numArrayCreate(int* nums, int numsSize) {NumArray* ret = (NumArray*)malloc(sizeof(NumArray));//创建结构体ret->sums = (int*)malloc(sizeof(int) * (numsSize + 1));//创建结构体成员数组//sums[i]指的是索引0到i的和ret->sums[0] = 0;for (int i = 0; i < numsSize; i++) {ret->sums[i + 1] = ret->sums[i] + nums[i];//存入}return ret;
}int numArraySumRange(NumArray* obj, int i, int j) {return obj->sums[j + 1] - obj->sums[i];//得到区域和
}void numArrayFree(NumArray* obj) {free(obj->sums);//释放空间
}

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

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

相关文章

干货教学!!!RHEL8中ansible中常用模块的使用

内容很长各位大老爷耐心观看 本章主要介绍ansible中最常见模块的使用 文件管理模块软件包管理模块服务管理模块磁盘管理模块用户管理模块防火墙管理模块 ansible的基本用法如下 ansible 机器名 -m 模块x -a “模块的参数” 对被管理机器执行不同的操作&#xff0c;只需要调…

【深度学习】Sentence Embedding-BERT-Whitening

前言 flow模型本身很弱&#xff0c;BERT-flow里边使用的flow模型更弱&#xff0c;所以flow模型不大可能在BERT-flow中发挥至关重要的作用。反过来想&#xff0c;那就是也许我们可以找到更简单直接的方法达到BERT-flow的效果。 BERT-whitening则认为&#xff0c;flow模型中涉及到…

AWS 知识一:如何在AWS上启动云AD服务器(详细到极致)

前言&#xff1a; 首先这里指的云AD服务器&#xff0c;只是为了让读友更好理解。云AD服务器在AWS中称为目录。AWS一共提供了4种目录类别&#xff0c;下面我将全程使用AWS托管微软AD这种目录类别进行示例。他完全提供了和Microsoft AD的功能&#xff0c;包括NTLM&#xff0c;Ker…

欧洲版OpenAI疑似将在24年发布并开源GPT-4级别模型!

大家好&#xff0c;我是二狗。 今天在推特上看到一条振奋人心的消息&#xff1a; “ 欧洲版OpenAI、法国初创公司 Mistral 首席执行官 Arthur Mensch 在法国国家广播电台宣布&#xff0c;Mistral 将在 2024 年发布开源 GPT-4 级别模型。” 这位老哥接着表示甚至可能是免费的&a…

传统软件集成AI大模型——Function Calling

传统软件和AI大模型的胶水——Function Calling 浅谈GPT对传统软件的影响Function Calling做了什么&#xff0c;为什么选择Function CallingFunction Calling简单例子&#xff0c;如何使用使用场景 浅谈GPT对传统软件的影响 目前为止好多人对chatGPT的使用才停留在OpenAI自己提…

数据可视化---箱线图

类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…

【MySQL】数据库和表的操作

数据库和表的操作 一、数据库的操作1. 创建数据库2. 字符集和校验规则&#xff08;1&#xff09;查看系统默认字符集以及校验规则&#xff08;2&#xff09;查看数据库支持的字符集&#xff08;3&#xff09;查看数据库支持的字符集校验规则&#xff08;4&#xff09;校验规则对…

RabbitMQ 基础

1.初识RabbitMQ 1.1.同步调用 我们现在基于OpenFeign的调用都属于是同步调用&#xff0c;那么这种方式存在哪些问题呢&#xff1f; 拓展性差性能下降级联失败 而要解决这些问题&#xff0c;我们就必须用异步调用的方式来代替同步调用。 1.2.异步调用 异步调用方式其实就是基…

EG网关网口连接MCGS触摸屏应用案例

EG网关网口连接MCGS触摸屏应用案例 前言&#xff1a;MCGS触摸屏广泛应于工业控制领域&#xff0c;是一款性能高&#xff0c;运行稳定的人机交互设备。此次我们要把MCGS的TPC7062系列触摸屏通过Modbus协议连接EG系列网关&#xff0c;将数据传输到EMCP物联网云平台&#xff0c;实…

马云笔下的AI电商时代,到底长啥样?

前两天&#xff0c;马云“惊现”阿里内网&#xff0c;正面回应拼多多市值接近阿里巴巴。 AI电商时代刚刚开始&#xff0c;对谁都是机会&#xff0c;也是挑战。要祝贺pdd过去几年的决策&#xff0c;执行和努力。谁都牛x过&#xff0c;但能为了明天后天牛而改革的人&#xff0c;…

页面置换算法详解专题

页面置换算法的功能是&#xff1a;当缺页中断发生&#xff0c;需要调入新的页面而内存已满时&#xff0c;选择内存当中哪个物理页面被置换~ 页面置换算法的目的&#xff1a;尽可能地减少页面的换进换出次数&#xff08;既缺页中断的次数&#xff09;。具体来说&#xff0c;把未…

论文笔记:Bilinear Attention Networks

更精简的论文学习笔记 1、摘要 多模态学习中的注意力网络提供了一种选择性地利用给定视觉信息的有效方法。然而&#xff0c;学习每一对多模态输入通道的注意力分布的计算成本是非常昂贵的。为了解决这个问题&#xff0c;共同注意力为每个模态建立了两个独立的注意分布&#x…

【YOLOv8量化】普通CPU上加速推理可达100+FPS

NNCF介绍 OpenVINO2023版本衍生出了一个新支持工具包NNCF(Neural Network Compression Framework – 神经网络压缩框架)&#xff0c;通过对OpenVINO IR格式模型的压缩与量化更好的提升模型在OpenVINO框架上部署的推理性能&#xff0c;github。 https://github.com/openvinoto…

STM32单片机项目实例:基于TouchGFX的智能手表设计(5)硬件驱动层程序设计

STM32单片机项目实例&#xff1a;基于TouchGFX的智能手表设计&#xff08;5&#xff09;硬件驱动层程序设计 目录 一、 概述 二、 新建工程与外设配置 三、 TouchGFX配置 四、 增加TouchGFX关键驱动 一、 概述 本文内容主要进行工程新建&#xff0c;硬件外设的配置以及添加…

【Python】—— 如果使用matplotlib做数据可视化

matplotlib做数据可视化 相关知识掌握matplotlib的基本使用方法1. 折线图2. 散点图3. 柱状图4. 饼图5. 直方图6. 等高线图7. 图形定制 掌握数据处理的基本方法1. 数据筛选2. 缺失值处理3. 异常值处理 理解数据可视化的原则和方法1. 选择合适的图表类型2. 避免数据混淆3. 突出重…

【java IO】|java NIO总结

在传统的 Java I/O 模型&#xff08;BIO&#xff09;中&#xff0c;I/O 操作是以阻塞的方式进行的。也就是说&#xff0c;当一个线程执行一个 I/O 操作时&#xff0c;它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈&#xff0c;因为需要为每个连…

Tarjan-割点问题

文章目录 前言割点定义割点的求解割点判定定理证明&#xff08;非严谨&#xff09; 算法实现算法流程代码详解 再看SCCOJ练习 前言 之前介绍Tarjan算法求强连通分量时&#xff0c;提到了代码段中对于访问过的邻接点应用其时间戳来更新追溯值&#xff0c;不是说用追溯值更新会导…

结果实例: 一个cpu的parsec结果

简介 限于篇幅限制&#xff0c;很多教程和论文只展示部分结果。我们这里展示非常细节的结果&#xff0c;包括输出的许多命令行结果。 运行命令行 的shell窗口 ./build/X86/gem5.opt -d m5out/onlyoneCPUkvmCheckPointDifferRCS20231218restore \configs/deprecated/example/…

教务系统一键评教

利用浏览器的开发者模式实现“一键评教”&#xff0c;本教程针对金智教务系统 步骤 1、打开教务系统的评教页面。 2、按下键盘快捷键 F12&#xff0c;或者点击鼠标右键打开浏览器的开发者工具&#xff0c;然后选择控制台&#xff08;Console&#xff09;。 3、复制以下 Java…

大数据机器学习-梯度下降:从技术到实战的全面指南

大数据机器学习-梯度下降&#xff1a;从技术到实战的全面指南 文章目录 大数据机器学习-梯度下降&#xff1a;从技术到实战的全面指南一、简介什么是梯度下降&#xff1f;为什么梯度下降重要&#xff1f; 二、梯度下降的数学原理代价函数&#xff08;Cost Function&#xff09;…