LeetCode 238. 除自身以外数组的乘积
题目链接
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目解析
使用前缀和进行解决该题,只不过与之前前缀和不同的是这个题目计算前缀和的时候不需要计算当前元素,也就是当前位置前缀和的值其实是不包含当前元素的前缀和。
我们算出该位置的前缀和(不包含当前元素),后缀和(不包含当前元素)。然后再相乘。
解题方法
法一:我们直接定义三个数组,一个记录最终结果,一个计算前缀和,一个计算后缀和。
法二:只需要定义一个数组,先计算前缀和,然后使用一个变量记录后缀和与之相乘,只需要遍历的过程中乘上后缀和即可。
代码
法一
class Solution
{
public:vector<int> productExceptSelf(vector<int>& nums) {int n=nums.size();vector<int> answer(n),answer_front(n),answer_tail(n);answer_front[0]=nums[0];answer_tail[n-1]=nums[n-1];for(int i=1;i<n;i++){answer_front[i]=answer_front[i-1]*nums[i];}for(int i=n-2;i>=0;i--){answer_tail[i]=answer_tail[i+1]*nums[i];}for(int i=0;i<n;i++){// 注意处理第一个元素与第二个元素if(i==0)answer[i]=answer_tail[i+1];else if(i==n-1)answer[i]=answer_front[n-2];else answer[i]=answer_front[i-1]*answer_tail[i+1];}return answer;}
};
法二
class Solution
{
public:vector<int> productExceptSelf(vector<int>& nums) {int n=nums.size();vector<int> ret(n);// 先算前缀和// 第一个前缀和设为1,目的是为了不影响后面数据的计算ret[0]=1;// 需要注意的是我们所计算的前缀和是不包含自身的for(int i=1;i<n;i++)// 当前位置的前缀和等于上一个数的前缀和*上一个数组的元素ret[i]=ret[i-1]*nums[i-1];// 再计算后缀和// 使用k来记录后缀和,设为1为了不影响前边的后缀和数据int k=1;for(int i=n-2;i>=0;i--){// 每次遍历都及时更新kk*=nums[i+1];// 更新ret[i]ret[i]=ret[i]*k;}// 此时数组ret中的元素就是当前元素的前缀和*后缀和return ret;}
};
相关文章:
LeetCode 238. 除自身以外数组的乘积
题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 使用前缀和进行解决该题,只不过与之前前缀和不同的是这个题目计算前缀和的时候不需要计算当前元素,也就是当前位置前缀和的值其实是不包含当前元素的前缀和。…...
点击劫持概念及解决办法
1.点击劫持的概念 点击劫持 (Clickjacking) 技术又称为界面伪装攻击 (UI redress attack ),是一种视觉上的欺骗手段。攻击者使用一个或多个透明的 iframe 覆盖在一个正常的网页上,然后诱使用户在该网页上进行操作,当用户在不知情的情况下点击…...
【Spring】手动实现Spring底层机制-问题的引出
🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理手动实现Spring底层机制-问题的引出 🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下…...
Java - List 去重,获取唯一值,分组列出所属对应集合
问题:List 去重,获取唯一值,分组列出所属对应集合 方案一:这个不需要额外的内存占用 //遍历后判断赋给另一个list集合public static void main(String[] args){List<String> list new ArrayList<String>(); lis…...
离散高斯抽样(Discrete Gaussian Sampling)
离散高斯抽样 离散高斯抽样(Discrete Gaussian Sampling)是一种常见于密码学和数学领域的随机采样方法。它通常用于构建基于格(lattice)的密码学方案,如基于格的加密和数字签名。Discrete Gaussian Sampling 的主要目…...
Elasticsearch:什么是生成式人工智能?
生成式人工智能定义 给学生的解释(基本): 生成式人工智能是一种可以创造新的原创内容的技术,例如艺术、音乐、软件代码和写作。 当用户输入提示时,人工智能会根据从互联网上现有示例中学到的知识生成响应,…...
责任链模式让我的代码精简10倍?
目录 什么是责任链使用场景结语 前言最近,我让团队内一位成员写了一个导入功能。他使用了责任链模式,代码堆的非常多,bug 也多,没有达到我预期的效果。实际上,针对导入功能,我认为模版方法更合适ÿ…...
Draw软件安装下载
Draw软件安装下载 1.软件简介2.软件下载3.安装方法 1.软件简介 Draw软件,全名为LibreOffice Draw,是一款免费、开源的2D矢量绘图软件,属于LibreOffice办公套件的一部分。它可以用来创建各种类型的图形,包括流程图、组织结构图、平…...
uniapp代码混淆ios上架43问题
参考文章:uniapp打包ios apk,混淆代码_uniapp 混淆_酸奶自由竟然重名了的博客-CSDN博客 uniapp打包ios,上传到ios应用市场时,会因为 4.3(代码重复率过高) 无法通过审核,此时可通过混淆代码来通过审核 1. 项目终端 安…...
Linux目录遍历函数
1.打开一个目录 #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); 参数: -name:需要打开的目录的名称 返回值: DIR * 类型,理解为目录流 错误返回NULL 2.读取目录中的数据 #include <dirent.h…...
数据库-理论基础
目录 1.什么是数据库? 2.数据库与文件系统的区别? 3.常见的数据库由那些? 4.关系型数据库(MySQL)的特征及组成结构介绍 1.什么是数据库? 数据:描述事物的符号记录,可以是数字,文…...
【已解决】src/spt_python.h:14:20: 致命错误:Python.h:没有那个文件或目录
src/spt_python.h:14:20: 致命错误:Python.h:没有那个文件或目录 问题 其中重点的报错信息 src/spt_python.h:14:20: fatal error: Python.h: No such file or directory 思路 sudo yum install python-devel然后重新安装需要的依赖。 解决 成功。…...
基于Face++网络爬虫+人脸融合算法智能发型推荐程序——深度学习算法应用(含Python及打包exe工程源码)+爬虫数据集
目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境 模块实现1. Face.APl调用1)Face.APl介绍2)调用API 2. 数据爬取1)网络数据爬取步骤2)爬虫实现 3. 模型构建4. 用户界面设计1)需要调用的库文…...
Jetson nano嵌入式平台配置ip记录
背景 Jetson nano平台使用千兆网和PC连接时没有ip地址,在ubuntu的终端输入ifconfig显示eh0未设置ip,需要先在nano平台上配置ip地址,然后PC通过千兆网远程控制该平台。 配置ip 使用终端进入到network文件夹中, cd /etc/network…...
前端中的跨域请求及其解决方案
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 跨域(Cross-Origin)⭐CORS(跨域资源共享)⭐JSONP(JSON with Padding)⭐代理服务器⭐ WebSocket⭐服务器设置响应头⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:…...
SpringBoot2.0(mybatis-plus初始使用)
目录 一,介绍二,SpringBoot2.x整合MybatisPlus Lombok2.1,添加依赖 pom2.2,配置数据库信息 application.properties2.3,工程结构初始化 三,创建接口返回统一对象四,创建bean五,创建…...
游戏视频录制软件对比,哪款最适合你的需求?
随着电子竞技和游戏直播行业的迅速崛起,越来越多的玩家渴望记录并分享自己在游戏中的精彩瞬间。游戏视频录制软件正是满足这一需求的关键工具。本文将针对三款优秀的游戏视频录制软件进行对比分析,以便为读者提供选购建议。 游戏视频录制软件1࿱…...
耐蚀合金连续油管最新版 学习记录
声明 本文是学习GB-T 42858-2023 耐蚀合金连续油管. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了耐蚀合金连续油管的订货、材料、制造、检验试验、标记等。 本文件适用于油气井用耐蚀合金连续油管(以下简称"油管")…...
LoGoNet:基于局部到全局跨模态融合的精确 3D 目标检测
论文地址:https://arxiv.org/abs/2303.03595 论文代码:https://github.com/sankin97/LoGoNet 论文背景 激光雷达传感器点云通常是稀疏的,无法提供足够的上下文来区分远处的区域,从而造成性能次优。 激光雷达-摄像机融合方法在三…...
Python 多线程、线程池、进程池
线程间的通讯机制 消息队列 event 事件对象 当线程创建完成之后,并不会马上执行线程,而是等待某一事件发生,线程才会启动 import threading# # 创建 event 对象 # event threading.Event() # # 重置代码中的 event 对象,使得所…...
Opencascade避坑指南:Select()函数7个常见使用误区与调试技巧
Opencascade避坑指南:Select()函数7个常见使用误区与调试技巧 在三维建模和CAD开发领域,Opencascade作为一款强大的开源几何内核,其交互功能一直是开发者关注的焦点。而AIS_InteractiveContext中的Select()函数,作为对象选取的核心…...
Qwen3-Reranker-8B实战教程:为LlamaIndex添加Qwen3重排序插件
Qwen3-Reranker-8B实战教程:为LlamaIndex添加Qwen3重排序插件 1. 为什么需要重排序? 如果你用过RAG(检索增强生成)系统,可能会遇到一个常见问题:检索出来的文档,排在最前面的不一定是最相关的…...
从漏极、栅极到源极开关:手把手教你选对单端电荷泵拓扑(基于噪声与速度权衡)
从漏极、栅极到源极开关:单端电荷泵拓扑的噪声与速度权衡实战指南 在锁相环(PLL)设计中,电荷泵的性能往往成为整个系统相位噪声和杂散特性的瓶颈。特别是当设计目标同时包含低带内相位噪声和高开关速度时,单端电荷泵的拓扑选择就变得尤为关键…...
AI辅助开发深度探索:在快马平台上对比评测类qoderwork官网的AI代码生成能力
最近在研究AI辅助开发时,发现一个很有意思的现象:同样是生成一个网页项目,不同AI模型给出的代码风格和实现思路差异很大。这让我萌生了一个想法——能不能搭建一个平台,专门用来对比评测不同AI模型的代码生成能力?就像…...
Nunchaku FLUX.1-dev 结合Transformer架构:提升图像生成一致性与细节
Nunchaku FLUX.1-dev 结合Transformer架构:提升图像生成一致性与细节 最近在尝试各种文生图模型时,我发现了一个挺有意思的现象:很多模型在处理简单描述时表现不错,但一旦遇到包含多个对象、复杂关系或者长段描述的提示词&#x…...
Axure RP中文界面完全指南:4步实现高效设计工作流
Axure RP中文界面完全指南:4步实现高效设计工作流 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 作为产…...
告别定位漂移:用Python手把手实现GNSS载波相位平滑伪距(附代码)
告别定位漂移:用Python手把手实现GNSS载波相位平滑伪距(附代码) 在无人机自主飞行或自动驾驶小车导航时,你是否遇到过这样的困扰:明明设备静止不动,地图上的定位点却像喝醉酒一样左右摇摆?这种&…...
OpenClaw+nanobot技能开发:从零编写自定义文件处理器
OpenClawnanobot技能开发:从零编写自定义文件处理器 1. 为什么需要自定义文件处理技能 上周我整理项目文档时,遇到了一个典型问题:需要将数百个Markdown文件按照"日期-标题"格式批量重命名。手动操作不仅耗时,还容易出…...
杭州做生成式引擎优化的服务公司有哪些?
杭州做生成式引擎优化的服务公司有哪些? 一、行业背景:GEO已成为AI时代企业增长的核心基建 生成式引擎优化(GEO,Generative Engine Optimization),是针对大语言模型的检索逻辑与回答规则,优化企…...
WeMod Pro免费解锁终极指南:两种补丁方法完整对比与实战教程
WeMod Pro免费解锁终极指南:两种补丁方法完整对比与实战教程 【免费下载链接】Wemod-Patcher WeMod patcher allows you to get some WeMod Pro features absolutely free 项目地址: https://gitcode.com/gh_mirrors/we/Wemod-Patcher 还在为WeMod Pro的高级…...
