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

LeetCode238_除自身以外数组的乘积

LeetCode238_除自身以外数组的乘积

  • 标签:#数组 #前缀和
  • Ⅰ. 题目
  • Ⅱ. 示例
  • 0. 个人方法一:暴力循环嵌套
  • 0. 个人方法二:前缀和后缀分别求积

标签:#数组 #前缀和

Ⅰ. 题目

给你一个整数数组 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]

0. 个人方法一:暴力循环嵌套

看到这题,第一想法就是先循环算所有数的乘积,然后再循环分别在每个位置上做个除法。但是题目直接就说不要使用除法。(我*****)(但这样也有道理:因为如果数组包含“0”的话就会有些问题)

于是我就想暴力循环了,对于每个位置都做一遍循环来计算结果。但这样时间复杂度太高了,达到了O(n2),于是它给我报了个RunTimeError。来大概看一下吧。

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int length = nums.size();vector<int> answer(length, 1);int MultiCount = 1;for (int i=0; i<length; i++){for (int j=0; j<length; j++){if (j != i){MultiCount *= nums[j];}}answer[i] = MultiCount;MultiCount = 1;}return answer;}
};

0. 个人方法二:前缀和后缀分别求积

在跟ChatGPT要了个思路(但没要代码)之后,它告诉我了这个前缀积+后缀积的方法。然后我猛拍大腿,我怎么没想到!于是自己实现了一下:

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int length = nums.size();vector<int> answer(length);answer[0] = 1;// 前缀乘积for (int i=1; i<length; i++){answer[i] = answer[i-1] * nums[i-1];}// 后缀乘积int MultiCount = 1;for (int i=length-2; i>=0; i--){MultiCount *= nums[i+1];answer[i] *= MultiCount;}return answer;}
};
  • 复杂度分析

    • 时间复杂度:O(N),其中 N 指的是数组 nums 的大小。分析与方法一相同。
    • 空间复杂度:O(1),输出数组不算进空间复杂度中,因此我们只需要常数的空间存放变量。

相关文章:

  • untiy 实现点击按钮切换天空盒子
  • 手动实现legend 与 echarts图交互 通过js事件实现图标某项的高亮 显示与隐藏
  • Vivado22 Vcs18仿真联调原语缺失
  • DNS实验
  • STM32F407使用ESP8266实现阿里云OTA(中)
  • Python学习之路(五)-接口API
  • Java Thread类深度解析:构造方法与核心方法全攻略
  • 运算符重载 (Operator Overloading)
  • RPCRT4!NDRSContextUnmarshall2函数分析
  • IEEE综述 | 车道拓扑推理20年演进:从程序化建模到车载传感器
  • 什么是CMMI认证?CMMI评估内容?CMMI认证能带来哪些好处?
  • 通过4种方法来重置UOS操作系统中的用户密码
  • 4.3 工具调用与外部系统集成:API调用、MCP(模型上下文协议)、A2A、数据库查询与信息检索的实现
  • 简易学生成绩管理系统(C语言)
  • 动手试一试 Spring Security入门
  • 服务器上安装node
  • Ubuntu服务器上如何监控Oracle数据库
  • JCP官方定义的Java技术体系组成部分详解
  • 操作系统---经典同步问题
  • 高功率激光输出稳定性不足?OAS 光学软件来攻克
  • 我国风电光伏装机历史性超过火电
  • 专访|攸佳宁:手机只是矛盾导火索,重要的是看见孩子的内心
  • 中国天主教组织发唁电对教皇去世表示哀悼
  • 孙燕姿演唱会本周末开唱,小票根如何在上海释放大活力
  • 国防部:菲挑衅滋事违背地区国家共同利益
  • 中国海外宏洋集团:一季度经营溢利同比降48.6%,密切关注行业收并购机会等