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

238 除自身以外数组的乘积

在这里插入图片描述
解题思路:
\qquad 这道题要求在 O ( n ) O(n) O(n) 时间内解决,但是不能使用除法。仅使用乘法的话,看上去很难在一次遍历中得出想要的结果,但是没关系,一次遍历不行的话那就试试两次、三次,重要的是分析在一次遍历中能干些什么。

\qquad 所有answer[i]先初始化为1,nums[0]虽然不是answer[0]的乘数,但是它却是answer[1 ~ n-1]的乘数。同样的情况存在于每一个nums[i],都是nums[i+1 ~ n-1]的乘数。因此,可以记录一个"前缀积"prev = nums[0] * ...* nums[i-1],构成了answer[i]的一部分,即answer[i] = 1 * prev * (remain)。那么剩下remain = nums[i+1] * .. * nums[n-1]看起来不就和prev一模一样,只不过是从后往前累乘的“后缀积”,这样经过两次遍历就可以凑全answer[i]的所有部分了。

	vector<int> productExceptSelf(vector<int>& nums) {vector<int> ans(nums.size(), 1);int pre = 1;for(int i = 0; i < nums.size(); i++){ans[i] = pre;pre *= nums[i];}pre = 1;for(int i = nums.size()-1; i >= 0; i--){ans[i] *= pre;pre *= nums[i];}return ans;}

http://www.mrgr.cn/news/33468.html

相关文章:

  • Oracle(139)如何创建和管理数据库用户?
  • 【Elasticsearch系列十九】评分机制详解
  • MySQL 的 ACID 属性:保障数据完整性的基石
  • 数据挖掘实战-基于SARIMA时间序列模型预测阿里巴巴股票数据趋势
  • 90%的人都不知道的国庆头像制作神器!AI智能一键搞定,快速上手!
  • BP神经网络
  • 240922-MacOS终端访问硬盘
  • DeepSeek 2.5本地部署的实战教程
  • ETCD学习使用
  • 数据结构与算法——Java实现 8.习题——移除链表元素(值)
  • golang学习笔记4-基本数据类型
  • 哔哩哔哩自动批量删除抽奖动态解析篇(二)
  • 移动登录页:让用户开启一段美好的旅程吧。
  • Spring Cloud Alibaba-(2)Nacos【服务注册与发现、配置管理】
  • 如何在Jupyter Notebook中将TensorFlow和Keras降级到2.8.0版本:详细指南
  • Vivado的.v文件被误分类到Non-module Files中[filemgmt 20-2001] Source scanning failed
  • Linux,uboot,kernel启动流程,S5PV210芯片的启动流程,DRAM控制器初始化流程
  • 【Vue】自定义指令 - 点击当前区域外
  • SSM+vue音乐播放器管理系统
  • 数值计算 --- 平方根倒数快速算法(0x5f3759df,这是什么鬼!!!)