LeetCode刷题记录——day2

https://leetcode.cn/problems/product-of-array-except-self/description/?envType=study-plan-v2&envId=top-interview-150 问题在于不使用除法并且空间复杂度为O(1),当第一次从头开始遍历时由于不知道后续数组元素是什么,所以无法得到答案,而如果当知道一个后续数组元素后,又回去更新答案的话,无疑会提高时间复杂度。不妨这样看待,如果我们已经遍历一次数组并且能够记录下足够的信息的话,那么下次我们再次遍历数组时不就可以相对地知道后续元素的信息了吗。由此推广,为了算法简单一些,我们甚至可以遍历有限次,获得足够的信息,然后一次得到最终答案。 由这样的思路我们再看问题,对于任何一个元素,其除了自身以外的的元素的乘积由两个部分构成,一个是它的前序元素乘积,一个是后续元素乘积。前者可以通过正向的遍历得到,后者通过反向遍历也可以得到,由此答案就明了了;

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int len = nums.size();vector<int> answer(len);int answer_R[len],answer_L[len];answer_L[0]=1,answer_R[len-1]=1;for(int i=1;i<len;i++){answer_L[i]=answer_L[i-1]*nums[i-1];}for(int i=len-2;i>=0;i--){answer_R[i]=answer_R[i+1]*nums[i+1];}for(int i=0;i<len;i++){answer[i]=answer_L[i]*answer_R[i];}return answer;}
};

同理,其实我们不需要两个数组,只需要一个中间变量记录后续乘积的过程就可以了,这样可以减小空间复杂度;

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int len = nums.size();vector<int> answer(len);answer[0]=1;for(int i=1;i<len;i++){answer[i]=answer[i-1]*nums[i-1];}int temp=nums[len-1];for(int i=len-2;i>=0;i--){answer[i]=temp*answer[i];temp=temp*nums[i];}return answer;}
};

本文由博客一文多发平台 OpenWrite 发布!

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

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

相关文章

Python 枚举(Python Enumerations)

Python 枚举&#xff08;Enumerations&#xff09;是一种用于创建命名的常量集合的方法。它提供了一种更好地组织代码、增加可读性和可维护性的方式&#xff0c;特别是在需要表示一组相关常量时。 Python 的枚举是通过 enum 模块实现的&#xff0c;它在 Python 3.4 版本之后成…

【Linux】Linux基本开发工具(yum) (vi/vim)的使用

本文章内容&#xff1a; 学习yum工具&#xff0c;进行软件安装掌握vim编辑器使用 Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成…

es 聚合操作(一)

前言 Elasticsearch除搜索以外&#xff0c;提供了针对ES 数据进行统计分析的功能。聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 衣服品牌的受欢迎程度这些衣服的平均价格、最高价格、最低价格这些衣服的每天、每月销量如何 使用…

产品推荐 | 基于Xilinx Zynq UltraScale+打造的仙女座 Andromeda FPGA核心板

1、产品概述 仙女座Andromeda XZU65片上系统&#xff08;SoC&#xff09;核心板通过结合高端Xilinx Zynq UltraScale™ MPSoC系列芯片和高速DDR4 ECC SDRAM、eMMC flash、双QSPI flash、双Gigabit Ethernet PHY、USB 3.0形成了一个完整的、功能强大的嵌入式处理系统。得益于大…

Rhino与Revit API之间的转换

你好&#xff0c;我是九哥~ 最近发现Rhino.Inside.Revit的API手册更新了&#xff0c;终于可以开心的写RIR代码了&#xff0c;小伙伴快去试试吧&#xff0c;地址如下&#xff1a; https://www.rhino3d.com/inside/revit/1.0/reference/rir-api 今天我们先来聊聊 Rhino 与 Rev…

ARM:汇编点灯

.text .global _start _start: 使能GPIOE和GPIOF的外设时钟 LDR R0,0x50000A28 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来&#xff0c;保存到R1中 ORR R1,R1,#(0x3<<4) 将第3/4位设置为1 STR R1,[R0] 将修改后的数值写回设置LED1亮 设置PE10为输出…

Python实战:机器学习算法

本文将详细介绍Python中常用的机器学习算法&#xff0c;包括线性回归、逻辑回归、决策树、随机森林、支持向量机等。 一、引言 机器学习是人工智能的一个重要分支&#xff0c;它使计算机能够从数据中学习并做出决策。Python作为一门流行的编程语言&#xff0c;拥有丰富的机器…

蓝桥杯2023年-阶乘的和(数学推理,C++)

题目描述 给定 n 个数 Ai&#xff0c;问能满足 m! 为∑ni1(Ai!) 的因数的最大的 m 是多少。其中 m! 表示 m 的阶乘&#xff0c;即 1 2 3 m。 思路 我们发现m最大为所有A中的最小值&#xff0c;但是如果有Ai1个Ai相同&#xff0c;则他们可以合并为Ai1&#xff0c; 即…

华为ensp中rip动态路由协议原理及配置命令(详解)

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; ————前言————— RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种距离矢…

hive sql实现查找商品表名称中包含敏感词的商品

背景 用户上传的商品表一般会包含商品名称&#xff0c;由于这些商品名称是用户自己起的&#xff0c;里面可能包含了敏感词&#xff0c;需要通过sql找出来哪些商品的商品名称包含了敏感词汇 hive sql实现查找商品表名称中包含敏感词的商品 实现思路&#xff1a; 1.商品表和敏…

获取指定日期金融期货数据

数据来源&#xff1a;日统计 | 中国金融期货交易所 代码&#xff1a; import akshare as ak from datetime import datetime import pandas as pd pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, None)cffex_daily ak.get_cffex_daily(datetime…

利用SpringBoot Actuator 来构造/health /info 等监控接口

当我们用K8S 部署微服务时&#xff0c; 很多时候需要调用 service的/health 等状态接口&#xff0c; 已确定container的运行状态是否健康。 而Spring boot Actuator 就是用来快速构造这些状态接口的工具 引入依赖 <!-- actuator --><dependency><groupId>or…

xss.pwnfunction(DOM型XSS)靶场

环境进入该网站 Challenges (pwnfunction.com) 第一关&#xff1a;Ma Spaghet! 源码&#xff1a; <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParams.get(somebody) || "Somebo…

Grok-1 源码中语法 @dataclass 变量名称:变量类型

Grok-1 源码中语法 dataclass 变量名称:变量类型 flyfish model.py dataclass class Transformer(hk.Module):"""A transformer stack."""num_q_heads: intnum_kv_heads: intkey_size: intwidening_factor: floatinit_scale: floatmesh: Anyat…

YOLO_you only look once

前言 计算机图形学的课程即将结束&#xff0c;我需要提交一份关于YOLO模型的学习报告。在这段时间里&#xff0c;我对YOLO进行了深入的学习和研究&#xff0c;并记录下了我的学习过程和心得体会。本文将详细介绍YOLO模型的原理、优缺点以及应用领域&#xff0c;希望能够为后续…

css 如何获取分辨率(使用@media查询)

在CSS中&#xff0c;可以使用media查询来应对不同的屏幕分辨率。例如&#xff0c;您可以为不同的屏幕宽度设置不同的样式规则。 /* 针对屏幕宽度小于600px的样式 */ media screen and (max-width: 599px) {body {background-color: lightblue;} }/* 针对屏幕宽度大于或等于600…

spring整合Sentinel

安装sentinel&#xff1a; 执行命令; java -jar sentinel-dashboard-1.8.6.jar 注:sentinel的默认端口为8080&#xff0c;容易出现tomcat的冲突。 当端口冲突&#xff0c;可以使用该指令修改sentinel的端口 默认账号和密码都为sentinel Springcloud整合sentinel&#xff1a;…

首个业内DNA存储技术规范发布

在DNA数据存储的检索过程中&#xff0c;采用了三个输入对应一个输出逻辑实现的算法模式来生成数据表示的模式。这一算法模式的设计是为了有效编码和解码存储在DNA分子上的信息。 其中提到的“扰动比例”δ(n)是一个关键概念&#xff0c;它衡量的是在总的细胞数目&#xff08;此…

UE4_官方动画内容示例1.2_动画蓝图——使用蓝图告知Actor播放动画

展示了两个示例&#xff1a;在其中一个示例中&#xff0c;使用蓝图告知Actor播放动画&#xff0c;在另外一个示例中&#xff0c;展示了告知Actor播放动画的动画蓝图&#xff08;例如&#xff0c;此示例展示了如何将变量从蓝图传递给动画蓝图&#xff0c;并演示了如何将现有姿势…

获取A股所有股票实时行情、价格

数据来源&#xff1a; https://quote.eastmoney.com/center/gridlist.html#hs_a_board 代码&#xff1a; import akshare as ak import pandas as pd pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, None) pd.set_option(display.width, 1000)s…