【每日一题】【LeetCode】【第十二天】区域和检索 - 数组不可变

news2024/12/26 23:09:17

解决之路= =

题目描述

在这里插入图片描述

测试案例(部分)

在这里插入图片描述

第一次

emmm,说实话,一开始我还真没看懂题目是什么意思。。。。

自己按我自己理解的方式写了一下代码,用测试案例跑了下,成功了。

在这里插入图片描述

不过,放进去跑不通,报错也不是代码逻辑的问题,应该是LeetCode的测试代码和自己补充的两个函数冲突了。

再看看题目,我们好像不用干那么多事,只需要把每个函数的职责写好就行,不需要我们做后续的任务。。。所以我们试试。

class NumArray(object):
    def __init__(self, nums):
        self.nums = nums


    def sumRange(self, left, right):
        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)

测试正确,提交,通过了。

在这里插入图片描述

第二次

但就不知道怎么减少好费时间了,翻了翻评论区。除了有和自己一开始一样的,看不懂题目的,也看到和自己类似的代码答案。

不过,注意到了一个老哥指出的问题:题干一直强调sumRange()需要重复调用。
所以,降低时间复杂度,就是要减少sumRange()中耗费的时间。

那换个思路想想,减少sumRange()的耗时,就是要把费时的东西都放在__init__()里面干好。

那基于这个思路,我们改一下代码,要在__init__()里面准备好可以让sumRange()通过leftright快速得到结果的数据。这样的数据是什么样的呢?在这个老哥的评论中也有答案。

在这里插入图片描述

他的思路就是,从左到右,两两相加,这样得到的新序列numsi项就是原来numsi项和。这样,通过left和right就可以通过下标位置得到前left项和,以及前right项和,他们两相减,就得到了原来nums中第left+1项+…+第right项。所以,self.nums[right] - self.nums[left - 1]就是第left项+…+第right项的和。

class NumArray(object):
    def __init__(self, nums):
        self.nums = nums
        for i in range(len(self.nums)):
            if i > 0:
                self.nums[i] = self.nums[i] + self.nums[i - 1]


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

测试正确,提交成功,确实降低了耗时。

在这里插入图片描述

结束。

附件

在这里插入图片描述

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

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

相关文章

VScode远程调试深度学习debug

VS Code CtrlP,在搜索框>select interpreter检查一下python环境 #查看GPU 环境;版本号 nvidia-smi.exe使用VSCode进行深度学习首先进行debug 首先要安装Remote Development个人理解可以远程打开编辑文件。 点击左下角的箭头,在对话框中…

async-excel整合站内信通知用户体验感满满

前面的文章我们讲过消息中心站内信的实现 【消息中心】 那么本章我们来说说异步导入导出完成后,如何使用消息中心站内信的功能进行通知用户业务处理完成了 在async-excel中异步逻辑处理完成后会调用一个callback方法进行回调,所以我们可以再对async-exc…

完全二叉树与堆(包含STL堆的用法)

完全二叉树 完全二叉树为一类特殊的二叉树,高度为h的完全二叉树满足如下条件: (1)所有叶结点都出现在第h或h-1层; (2)第h-1层的所有叶结点都在非叶结点的右边; (3&#…

AAAI 2023|模拟人脑场景感知过程,套娃Transformer讲故事能力更上一层楼

原文链接:https://www.techbeat.net/article-info?id4467 作者:seven_ 视频字幕生成目前已成为工业界AI创作领域非常火热的研究话题,这一技术可以应用在短视频的内容解析和讲解中,AI讲故事的技术已经越来越成熟。而在学术界&…

13、ThingsBoard-如何发送告警邮件

1、概述 很多时候,我们使用thingsboard的时候,会遇到比如一个设备触发了告警,如何将设备的告警消息定义成邮件模板,然后通知租户或者客户管理员,管理员进行处理,这样的需求是非常重要的。 2、实现的步骤 要实现这个需求我总结了几步: 2.1、设备上报的参数与阈值进行…

基于关键点检测的病患步态检测及分析方法

在临床工作中,对患有神经系统或骨骼肌肉系统疾病而可能影响行走能力的患者需要进行步态分析,以评定患者是否存在异常步态以及步态异常的性质和程度 步态评定临床意义 1、评估患者是否存在异常步态以及步态异常的性质和程度 2、为分析异常步态原因和矫正异…

看我们应用性能监控如何几秒钟定位慢访问跟因

背景 某汽车集团的汽车配件电子图册系统是其重要业务系统。最近业务部门反映,汽车配件电子图册调用图纸时,出现访问慢现象。 某汽车集团总部已部署NetInside流量分析系统,使用流量分析系统提供实时和历史原始流量。本次分析重点针对汽车配件…

二进制?十进制!

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 给定两个十进制整数 : AAA,BBB 你需要把它们的二进制形式以十进制的运算法则相加输出结果。 例如: A3,B2A 3 , B 2A3,B2 的时候,AAA 的二进制表示是 : 111111 , BB…

Linux部署Nexus通过Maven推送及拉取代码

😊 作者: 一恍过去💖 主页: https://blog.csdn.net/zhuocailing3390🎊 社区: Java技术栈交流🎉 主题: Linux部署Nexus通过Maven推送及拉取代码⏱️ 创作时间: 2023年…

myBaits Expert Wheat Exome — 从多个小麦品种中富集超过250Mb的高可信度的外显子

myBaits Expert Wheat Exome 与国际小麦基因组测序联盟(IWGSC)合作开发,使用了IWGSC发布的中国春基因组和注释信息。靶向六倍体小麦中完整的高置信度且有基因注释的外显子区域,能够全面、统一、可靠地深入覆盖大干15 Gb的小麦基因组中超过250 Mb的CDS及其邻近区域。…

硅烷聚乙二醇活性酯;Silane-PEG-NHS;溶于大部分有机溶剂。仅供科研实验使用,不用于诊治

英文名称:Silane-PEG-NHS,Silane-PEG-SCM 中文名称:硅烷聚乙二醇活性酯 分子量:1k,2k,3.4k,5k,10k,20k。。。 存储条件:-20C,避光,…

数组常用方法总结 (5) :find / findIndex / filter

find 与前边讲过的 some 类似,用于检测数组的每一项是否符合限定条件。只要遇到一个符合条件的,就会停止循环。在循环中,如果是简单数组,数据不会被改变,如果是对象数组,数据会改变。如果停止了循环&#…

音频(七)——数字麦克风和模拟麦克风(DMIC/AMIC)

数字麦克风与模拟麦克风(DMIC/AMIC) 麦克风(mic):是将声音信号转换为电信号的能量转换器件,也就是用来采集你说话的声音扬声器(speaker):是一种把电信号转变为声信号的换能器件,就是把对方说话产生的电信号转换成声音播放出来。简…

比较C++在for循环中的i++和++i以及i++的O2优化的效率:++i真的比i++快吗

比较C在for循环中的i和i以及i的O2优化的效率&#xff1a;i真的比i快吗 前言 对i和i的争论褒贬不一&#xff0c;不知从何时起&#xff08;大概是学C的时候老师就是这么教的&#xff09;我的习惯是在for循环中使用i而不是i for (int i 0; i < n; i) // 典但是看到一些博客…

再说多线程(五)——死锁

在前面四节中&#xff0c;我们一直没有讨论多线程程序的一个负面问题——死锁&#xff0c;有了一定的基础&#xff0c;现在是时候研究一下死锁了。死锁一定是出现在多线程程序中&#xff0c;单线程是不可能造成死锁的&#xff0c;因为你不可能同时加两把锁。死锁有个简单的例子…

《软件工程》课程四个实验的实验报告(《可行性研究与项目计划》《需求分析》《系统设计》《系统实现》)

实验1《可行性研究与项目计划》 实验学时&#xff1a; 2 实验地点&#xff1a; 任意 实验日期&#xff1a; 12月15日 一、实验目的 了解&#xff1a;软件项目可行性研究及项目计划的基本原理与方法&#xff1b;掌握&#xff1a;Visio等工具进行可…

【尚硅谷】Java数据结构与算法笔记06 - 算法复杂度详解

文章目录一、算法的时间复杂度1.1 度量算法执行时间的两种方法1.1.1 事后统计1.1.2 事前估算1.2 时间频度1.2.1 基本介绍1.2.2 举例说明&#xff1a;基本案例1.2.3 举例说明&#xff1a;忽略常数项1.2.4 举例说明&#xff1a;忽略低次项1.2.5 举例说明&#xff1a;忽略系数1.3 …

WebServer传输大文件致客户端自动关闭

程序运行在云服务器上, Ubuntu 20.04LTS系统&#xff0c;用浏览器测试能正常打开页面&#xff0c;请求一般的html文本和几十kb的小图片无问题&#xff0c;接着放了一个1.63MB&#xff08; 1714387字节&#xff09;的网上找的图过去&#xff0c;客户端图没加载完就自动断连了&am…

如何搭建一个专业的企业知识库

当客户跟你达成合作关系后&#xff0c;需要持续的关系维护&#xff0c;在一定的销售点&#xff0c;定期和客户沟通&#xff0c;据调查&#xff0c;赢得一个新客户的成本可能是保留一个现有客户的5到25倍&#xff0c;作为营销策略&#xff0c;客户服务支持必须满足他们的期望。建…

Linux小黑板(7):再谈动静态

"我看到&#xff0c;久违的晴朗啊"一、什么是动静态库在本栏目前面的篇幅也提到过这个概念&#xff0c;因此本小节就小小地回顾一番。在linux下:静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。动态库(.so):程序在运行的时候才去链接动态库的代码&am…