238. 除自身以外数组的乘积

embedded/2024/10/11 2:47:33/

文章目录

  • 1.题目
  • 2.思路
  • 3.代码


1.题目

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]

2.思路

计算每个元素左侧的乘积并存储在 left 数组中,计算的区间是0到i-1,数组所有元素初始化为1

计算每个元素右侧的乘积并存储在 right 数组中,计算的区间是i+1到n-1,数组所有元素初始化为1

通过将 leftright 数组对应位置的乘积赋值给结果数组 result,从而得到每个元素除自身以外的所有元素的乘积

注意,边界问题,left的第一个元素要初始化为1,right的最后一个元素要初始化为1

3.代码

#include <vector>class Solution {
public:std::vector<int> productExceptSelf(std::vector<int>& nums) {int n = nums.size();// 初始化左侧乘积数组,初始值为1std::vector<int> left(n, 1);// 初始化右侧乘积数组,初始值为1std::vector<int> right(n, 1);// 初始化结果数组std::vector<int> result(n);// 计算左侧乘积for (int i = 1; i < n; ++i) {// left[i] 存储的是 nums[i] 左侧所有元素的乘积left[i] = left[i - 1] * nums[i - 1];}// 计算右侧乘积for (int i = n - 2; i >= 0; --i) {// right[i] 存储的是 nums[i] 右侧所有元素的乘积right[i] = right[i + 1] * nums[i + 1];}// 计算结果数组for (int i = 0; i < n; ++i) {// result[i] 是 left[i] 和 right[i] 的乘积result[i] = left[i] * right[i];}return result;}
};


http://www.ppmy.cn/embedded/125666.html

相关文章

【Unity】版本不一致且未升级资产,导致 Unity Sprite 2D 动画播放错误

自己的 Unity版本是 2022.3.45f1。目前折腾的这插件 2D Action RPG Engine: Mythril2D &#xff0c;推荐使用的 Unity 版本是 2021.3.18。 倒腾了这个 unity animation 动画半天&#xff0c;发现这个 animation sprite resolver 在导入动画帧的时候&#xff0c;一直都导入的是…

netty详细说明ByteBuf的使用

一、ByteBuf的使用 ByteBuf是Netty提供的用于处理网络数据的字节缓冲区&#xff0c;具有以下特点和使用注意事项&#xff1a; 基本概念和特点 功能强大&#xff1a;Netty的ByteBuffer替代品&#xff0c;解决了JDK API的局限性&#xff0c;为网络应用程序开发者提供了更好的AP…

请求响应-08.响应-案例

一.案例 获取员工数据&#xff0c;返回统一响应结果&#xff0c;在页面上渲染展示 二.展示最终效果 三.步骤 步骤一&#xff1a; <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3<…

从FastBEV来学习如何做PTQ以及量化

0. 简介 对于深度学习而言&#xff0c;通过模型加速来嵌入进C是非常有意义的&#xff0c;因为本身训练出来的pt文件其实效率比较低下&#xff0c;在讲完BEVDET后&#xff0c;这里我们将以CUDA-FastBEV作为例子&#xff0c;来向读者展示如何去跑CUDA版本的Fast-BEV&#xff0c;…

WSL2环境下Ubuntu的Docker安装与配置

检查是否存在安装残留&#xff0c;移除可能会造成冲突的组件。 for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done从apt Docker仓库中安装官方GPG key&#xff1a; sudo apt-get update …

锐明Crocus系统 RepairRecord.do SQL注入漏洞

0x01 产品描述&#xff1a; 明锐技术是一家专注于AI和视频技术的商用车智能物联&#xff08;AIoT&#xff09;解决方案提供商&#xff0c;Crocus系统是其核心产品之一。该系统旨在利用人工智能、高清视频、大数据和自动驾驶技术&#xff0c;提高企业或车队的运营效率&#xff0…

基于微信小程序的像素画创作与分享平台设计与实现

目录 1 系统概要说明 5 2 小程序设计 5 2.1 通用样式模块 5 2.2 通用方法模块 5 2.2.1 用户登录校验拦截器方法 5 2.2.2 登录方法 6 2.2.3 注册方法 7 2.2.4 登出方法 7 2.2.5 自动登录功能 8 2.3 像素画画板模块 8 2.3.1 画板坐标系 8 2.3.2 画板的生成 9 2.3.3 颜色的选择 9 …

QT 串口通信中确保数据接收完成的方法

目录 一、引言 二、Qt 串口通信基础 1.QSerialPort 类 2.信号与槽机制 三、确保接收完成的方法 1.基于数据长度判断 2.基于特定结束标志判断 3.基于定时器的超时判断&#xff08;适用于不确定长度情况&#xff09; 4.结合协议头中的长度信息&#xff08;对于自定义协…