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

238除自身以外数组的乘积

题目链接:

https://leetcode.cn/problems/product-of-array-except-self/description/解法一:暴力解法

直接遍历一遍数组,求该数组的除该数之外的乘积,但是超时时间复杂度为n方。

    vector<int> productExceptSelf(vector<int>& nums) {//遍历数组,求i下标之前的积,求i下标之后的积vector<int>arr;for (int i = 0; i < nums.size() ; i++){int ji = 1;for (int j = 0; j < nums.size() ; j++){if (j != i){ji = ji * nums[j];}}arr.push_back(ji);}return arr;}

所以我们开始优化,前缀和可以试一下,创建arr1数组先求前缀之积,第一位特殊处理为1,

创建arr2数组求后缀之积,最后一位特殊处理。

有了前缀之积和后缀之积,进行遍历

ans[i]=arr1[i]*arr2[i];求出答案请看代码

            //先求前缀积,再求后缀积,最后相乘vector<int>arr1(nums.size());vector<int>arr2(nums.size());//特殊处理arr1的第一位和arr2的最后一位、arr2[nums.size() - 1] = 1;arr1[0] = 1;//前缀积for (int i = 1; i < nums.size(); i++){arr1[i] = arr1[i - 1] * nums[i - 1];}//后缀积for (int i = nums.size() - 2; i >= 0; i--){arr2[i] = arr2[i + 1] * nums[i + 1];}vector<int>ans;for (int i = 0; i < nums.size(); i++){ans.push_back(arr1[i] * arr2[i]);}

http://www.xdnf.cn/news/756847.html

相关文章:

  • 鸿蒙OSUniApp微服务架构实践:从设计到鸿蒙部署#三方框架 #Uniapp
  • Vim 支持多种编程语言编辑器
  • 性能优化 - 工具篇:基准测试 JMH
  • TCP三次握手四次挥手
  • Notepad++找回自动暂存的文件
  • 【目标检测】backbone究竟有何关键作用?
  • 一键净化Excel数据:高性能Python脚本实现多核并行清理
  • Selenium Manager中文文档
  • 【Java】JDK 命令行工具
  • 从认识AI开始-----Transformer:大模型的核心架构
  • 【Unity博客节选】Timeline 的 AnimationOutputWeightProcessor 理解
  • Leetcode 269. 火星词典
  • 湖北理元理律师事务所:个人债务管理的温度与精度
  • SCSAI平台面向对象建模技术的设计与实现
  • Spring Ai 从Demo到搭建套壳项目(一)初识与实现与deepseek对话模式
  • MATLAB实战:Arduino硬件交互项目方案
  • 【Go-补充】Sync包
  • QtWidgets,QtCore,QtGui
  • uniapp uni-id 如果是正式项目,需自行实现发送邮件的相关功能
  • RAGflow详解及实战指南
  • 深度学习中常见的超参数对系统的影响
  • Vue 3 组件化设计实践:构建可扩展、高内聚的前端体系
  • 初学大模型部署以及案例应用(windows+wsl+dify+mysql+Ollama+Xinference)
  • 「数据采集与网络爬虫(使用Python工具)」【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • (javaSE)Java数组进阶:数组初始化 数组访问 数组中的jvm 空指针异常
  • 卷积神经网络(CNN)完全指南:从原理到实战
  • Java 中 MySQL 索引深度解析:面试核心知识点与实战
  • 牛顿迭代算法-深度解析
  • USART 串口通信全解析:原理、结构与代码实战
  • YOLOv11改进 | Conv/卷积篇 | 全维度动态卷积ODConv与二次创新C3k2助力YOLOv11有效涨点