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

前缀和-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.xdnf.cn/news/16461.html

相关文章:

  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——6. 传统算法实战:用OpenCV测量螺丝尺寸
  • nginx一个域名下部署多套前端项目
  • GRE、MGRE实验
  • RK3568笔记九十三:基于RKNN Lite的YOLOv5目标检测
  • FreeMarker模板引擎
  • 【C++】C++11特性的介绍和使用(第三篇)
  • 【RHCSA 问答题】第 10 章 配置和保护 SSH
  • 航空发动机高速旋转件的非接触式信号传输系统
  • 技术赋能与营销创新:开源链动2+1模式AI智能名片S2B2C商城小程序的流量转化路径研究
  • 工具 | 解决 VSCode 中的 Delete CR 问题
  • 小程序的客服咨询(与企业微信建立沟通)
  • (React入门上手——指北指南学习(第一节)
  • LeetCode——1957. 删除字符使字符串变好
  • 力扣---------238. 除自身以外数组的乘积
  • Ruby 数据库访问 - DBI 教程
  • Android-广播详解
  • Go-Elasticsearch v9 安装与版本兼容性
  • Flask input 和datalist结合
  • 图论:Dijkstra算法
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现沙滩小人检测识别(C#代码UI界面版)
  • 【机器学习深度学习】LLamaFactory微调效果与vllm部署效果不一致如何解决
  • 手动开发一个串口调试工具(二):Qt 串口类基本认识与使用
  • 系统性提升大模型回复准确率:从 RAG 到多层 Chunk 策略
  • 人工智能论文辅导:Prompt Engineering(特征工程)
  • C++学习之深入学习模板(进阶)
  • 力扣 hot100 Day56
  • 深度学习入门(2)
  • J2EE模式---数据访问对象模式
  • JavaWeb项目(纯Servlet+JSP+前端三大件)入门(从0开始)
  • 传统框架与减震楼盖框架地震动力响应分析与有限元模拟