当前位置: 首页 > news >正文

前缀和-238-除自身以外数组的乘积-力扣(LeetCode)

一、题目解析

1.answer[i]等于nums[i]中除nums[i]之外其余各元素的乘积

2.前缀元素和后缀的乘积在32位整数范围内(也就是不会超出int,暗示使用前缀和思想) 

3.不要使用除法,时间复杂度为O(N)

二、算法原理

解法1:暴力解法

固定一个数i,然后依次计算[0,i-1],[i+1,n-1]内所有元素的乘积,时间复杂为O(N^2)

解法2:前缀和思想(前缀积)

通过前缀积数组和后缀积数组的预处理,ans[i]=f[i]*g[i];但是我们能发现f[0]和g[n-1]的值是等于1的,举例ans[0]=f[0]*g[0],g[0]表示[1,n-1]内所有元素的积,符合要求,所以f[0]=1;g[n-1]同理

三、代码示例

由于解法1时间复杂度为O(N^2)会超时,所以只展示解法2的代码

解法2:

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums){int n = nums.size();vector<int> f(n),g(n),ret(n);f[0] = 1,g[n-1] = 1;for(int i = 1;i<n;i++){f[i] = f[i-1]*nums[i-1];}for(int j = n-2;j>=0;j--){g[j] = g[j+1]*nums[j+1];}for(int i = 0;i<n;i++){ret[i] = f[i]*g[i];}return ret;}
};

看到最后,如果对您有所帮助,还请点赞、收藏和关注,我们下期再见!

http://www.dtcms.com/a/299177.html

相关文章:

  • 数学建模国赛历年赛题与优秀论文学习思路
  • 弹性元空间:JEP 387 深度解析与架构演进
  • Windows Server存储池,虚拟磁盘在系统启动后不自动连接需要手动连接
  • Matrix Theory study notes[5]
  • Mybatis学习之配置文件(三)
  • 数学专业数字经济转型全景指南
  • 广东省省考备考(第五十七天7.26)——数量、言语(强化训练)
  • Linux c++ CMake常用操作
  • 提升网站性能:如何在 Nginx 中实现 Gzip 压缩和解压!
  • 广告业务中A/B实验分桶方法比较:UID VS DID
  • DIY心率监测:用ESP32和Max30102打造个人健康助手
  • Voxtral Mini:语音转文本工具,支持超长音频,多国语音
  • VMware Workstation17下安装Ubuntu20.04
  • Qt 线程池设计与实现
  • 面试150 只出现一次的数字
  • Pinia快速入门
  • 大模型面试回答,介绍项目
  • Flutter实现Retrofit风格的网络请求封装
  • Qt 线程同步机制:互斥锁、信号量等
  • VTK交互——ImageRegion
  • Mixture-of-Recursions: 混合递归模型,通过学习动态递归深度,以实现对自适应Token级计算的有效适配
  • RK3568笔记九十二:QT使用Opencv显示摄像头
  • 基于RK3588+国产实时系统的隧道掘进机智能操控终端应用
  • NOIP普及组|2009T1多项式输出
  • 20250726让荣品的PRO-RK3566开发板通过TF卡刷Buildroot系统
  • 详解力扣高频SQL50题之1141. 查询近30天活跃用户数【简单】
  • 工具 | 解决 VSCode 中的 Delete CR 问题
  • 黑屏运维OceanBase数据库的常见案例
  • Java中配置两个r2db连接不同的数据库
  • LeetCode 854:相似度为 K 的字符串