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

【力扣hot100】238.除自身以外数组的乘积

一、题目

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在  32 位 整数范围内。请 不要使用除法,且在 O(n) 时间复杂度内完成此题。示例 1:输入: nums = [1,2,3,4]
输出: [24,12,8,6]示例 2:输入: nums = [-1,1,0,-3,3]
输出: [0,0,9,0,0]

二、思路

一开始根本想不到用什么模板套,后面看了眼标签有前缀和,但忘记怎么套的了就硬着头皮写了,思路就是创建一个前缀积数组和一个后缀积数组,然后就嗯递归计算,最后相乘得到最后的ans

结果写的就很拉,时间复杂度倒也是O(n),但跑的很慢

三、代码

class Solution {
private:vector<int> left;vector<int> right;vector<int> ans;
public:void leftplus(int index,vector<int>& nums){if(index>nums.size()-2) return;    //终止left.push_back(nums[index]*left[index-1]);leftplus(index+1,nums);return;}void rightplus(int index,vector<int>& nums){if(index<1) return;    //终止right[index]=nums[index]*right[index+1];rightplus(index-1,nums);return;}vector<int> productExceptSelf(vector<int>& nums) {left.push_back(nums[0]);    //前缀积数组初始化leftplus(1,nums);right.assign(nums.size(), 1);   //后缀积数组初始化right[nums.size()-1]=nums[nums.size()-1];rightplus(nums.size()-2,nums);ans.push_back(right[1]);for(int i=1;i<nums.size()-1;i++){ans.push_back(left[i-1]*right[i+1]);}ans.push_back(left[left.size()-1]);return ans;}
};

拿示例1来说就是要算ans[1]的话就用left[1-1]和right[1+1]乘积就行了因为最多乘nums.size()-1个数,所以ans直接取left的末尾和right的开始即可

四、题解

题解:

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> res(n, 1);int l = 1;for (int i=0; i<n; i++) {   res[i] = l;l *= nums[i];}int r = 1;for (int i =n-1; i>=0; i--) {res[i] *= r;r *= nums[i];}return res;}
};

最聪明的做法,先从前往后将数组都按前缀积乘好,再从后往前用后缀积乘

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

相关文章:

  • 江门网站关键词推广seo关键词优化软件合作
  • 如何解决 pip install 安装报错 Backend ‘setuptools.build_meta’ 不可用 问题
  • C++智能指针使用指南(auto_ptr, unique_ptr, shared_ptr, weak_ptr)
  • GitHub等平台形成的开源文化正在重塑知可以谈人
  • 计算机网络:知识点梳理及讲解(三)数据链路层
  • PySide6 pyside6-deploy 命令 Linux 部署
  • 网站内的搜索怎么做的学校网站建设情况报告
  • 电脑建立网站朝阳区手机网站建设服务
  • 谷歌商店下载APK教程,先下载谷歌三件套,再直接从 Google Play 下载 APK 文件?
  • Spring中事务的传播行为
  • 将镜像推送到 Docker Hub 或私有仓库
  • 做qq图片的网站吗wordpress没有链接地址
  • 面向模块的综合技术之重定时优化(六)
  • 社交模板网站建设成都青羊网站建设
  • Android 数据持久化(SharedPreferences)
  • 四、高效注意力机制与模型架构
  • 沧州做网站公司兰州网站建站
  • C++ STL:string类(1) |了解string|编码|常用接口|迭代器|算法查找|auto|范围for
  • ESP32 Linux 开发环境
  • 网站建设全国排名alexa排名前三十
  • 声乐基础知识学习
  • Redis底层原理-持久化【详细易懂】
  • 现在建网站可以拖拉式的吗深圳住房建设网站
  • 流量打不开网站怎么办营销型企业网站 网络服务
  • 如何用ps做网站ui如何在云主机上建设网站
  • 营销网站建设818gx做商城网站多少钱
  • 【C/C++】动态加载(dlopen)和直接链接 库的区别
  • 集团内部协同项目管理模式整理表
  • 基于yolov11的机场跑道异物检测系统python源码+pytorch模型+训练数据集+精美GUI界面
  • 【开题答辩全过程】以 滨海游泳馆管理系统为例,包含答辩的问题和答案