算法---前缀和练习-1(除自身以外数组的乘积)

除自身以外数组的乘积

  • 1. 题目解析
  • 2. 讲解算法原理
  • 3. 编写代码

1. 题目解析

题目地址:点这里

在这里插入图片描述

2. 讲解算法原理

在这里插入图片描述

  1. 首先,创建两个辅助数组 f 和 g,它们的长度与 nums 相同。数组 f 用于存储每个元素左侧所有元素的乘积,数组 g 用于存储每个元素右侧所有元素的乘积

  2. 初始化 f[0] = 1,表示第一个元素左侧没有元素,所以乘积为 1。同时,初始化 g[n-1] = 1,表示最后一个元素右侧没有元素,所以乘积为 1

  3. 通过遍历数组 nums,计算每个元素左侧所有元素的乘积,并存储在数组 f 中。具体而言,对于位置 i,f[i] 的值等于 f[i-1] * nums[i-1],其中 f[i-1] 表示位置 i 的左侧所有元素的乘积。

  4. 通过逆向遍历数组 nums,计算每个元素右侧所有元素的乘积,并存储在数组 g 中。具体而言,对于位置 i,g[i] 的值等于 g[i+1] * nums[i+1],其中 g[i+1] 表示位置 i 的右侧所有元素的乘积。

  5. 创建一个结果数组 answer,长度与 nums 相同

  6. 通过遍历数组 nums,对于位置 i,计算 answer[i] = f[i] * g[i],即为除了 nums[i] 之外的所有元素的乘积。

  7. 返回结果数组 answer。


3. 编写代码

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n=nums.size();vector<int> f(n);vector<int> g(n);f[0]=1;g[n-1]=1;//预处理前缀和数组for(int i=1;i<n;i++){f[i]=f[i-1]*nums[i-1];}//预处理后缀和数组for(int i=n-2;i>=0;i--){g[i]=g[i+1]*nums[i+1];}//使用vector<int> answer(n);for(int i=0;i<n;i++){answer[i]=f[i]*g[i];}return answer;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud-Nacos注册中心

服务注册到nacos Nacos是SpringCloudAlibaba的组件&#xff0c;而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说&#xff0c;并没有太大区别。 主要差异在于&#xff1a; 依赖不同服务地址不同 1. 引入依赖…

sql中如何添加数据常用方法和操作手册

在SQL中&#xff0c;添加数据完整性通常涉及使用数据库的约束和规则来确保数据的质量和一致性。以下是一些在SQL中实现数据完整性的常用方法和操作手册&#xff1a; 1、定义数据类型: 在创建表时&#xff0c;为每个列定义合适的数据类型。这可以确保插入的数据符合预期的数据类…

1.7 Python 3和Python 2的区别

Python版本区别&#xff0c;Python 3和Python 2区别详解 ​ Python 版本分为两大流派&#xff0c;一个是 Python 2.x 版本&#xff0c;另外一个是 Python 3.x 版本&#xff0c;Python 官方同时提供了对这两个版本的支持和维护。 ​ 2020 年 1 月 1 日&#xff0c;Python 官方…

微信小程序图片资源优化实践

在开发微信小程序时,如何合理管理和优化图片资源是一个需要重点关注的问题。过大的图片包会导致小程序包体积过大,影响用户的下载和启动体验。因此,我们需要采取一系列措施来优化图片资源的使用。 1、合理选择图片存储位置 不建议将图片直接打包在小程序包中,这样会增加包的大…

XML Data – Semi-Structured Data XML 数据 - 半结构化数据

Outline • Structured, Semistructured, and Unstructured Data • XML Hierarchical (Tree) Data Model • Extracting XML Documents from Relational Databases • XML Documents, DTD, and XML Schema • XML Languages 结构化、半结构化和非结构化数据 - XML 层次&#x…

$.when.apply($, deferreds).done(function() {}) 用法

$.when.apply($, deferreds).done(function() {}) 这行代码是 jQuery 中用于处理多个异步操作的一种模式。让我们逐步解释其用法&#xff1a; $.when(): 这是 jQuery 中的一个方法&#xff0c;用于创建一个新的 Deferred&#xff08;延迟&#xff09;对象。Deferred 对象用于管…

普通用户权限运行Docker

普通用户权限运行Docker 安装Docker Docker的安装比较简单&#xff0c;在Docker官网已经给出了具体的方案&#xff0c;可以直接使用apt安装 # Add Dockers official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/…

如何设计循环队列(两种方法)

文章目录 前言一、方法一:数组法二、方法二.链表法总结 前言 前面有提到过队列的知识&#xff0c;这次来说一下怎么设计一个循环队列 一.循环队列&#xff08;力扣&#xff09; . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资…

P1020 [NOIP1999 提高组] 导弹拦截

一、问题描述 P1020 [NOIP1999 提高组] 导弹拦截 二、问题简析 该题要我们求两个问题&#xff1a; 1、不上升子序列的最大长度2、不上升子序列的最少个数 利用 D i l w o r t h Dilworth Dilworth 定理&#xff0c;我们得到不上升子序列的最少个数等于上升子序列的最大长…

【算法每日一练]-动态规划(保姆级教程 篇17 状态压缩)#POJ1185:炮兵阵地 #互不侵犯

目录 今日知识点&#xff1a; 把状态压缩成j,dp每行i的布置状态&#xff0c;从i-1和i-2行进行不断转移 把状态压缩成j,dp每行i的布置状态&#xff0c;从i-1行进行状态匹配&#xff0c;然后枚举国王数转移 POJ1185&#xff1a;炮兵阵地 思路&#xff1a; 题目&#xff1a;互…

代码随想录算法训练营第二十八天|● 93.复原IP地址 ● 78.子集 ● 90.子集II (JS写法)

93 复原IP地址 题目链接/文章讲解&#xff1a;https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1XP4y1U73i/ 思路&#xff1a; /*** param {string} s* return {string[]}*/ var resto…

Ollama、Langchain相关学习资源(动态更新)

大型预训练模型如GPT系列、BERT系列等&#xff0c;在消费级产品和垂直行业应用中加快了部署步伐&#xff0c;包括但不限于智能客服、内容创作、代码生成、决策支持等领域。 随着大模型开源&#xff0c;相关的部署工具和框架也得到发展和完善。例如&#xff0c;出现了一些专门针…

微信商家转账到零钱:实用指南,涵盖开通、使用与常见问题

商家转账到零钱是什么&#xff1f; 商家转账到零钱功能整合了企业付款到零钱和批量转账到零钱&#xff0c;支持批量对外转账&#xff0c;操作便捷。如果你的应用场景是单付款&#xff0c;体验感和企业付款到零钱基本没差别。 商家转账到零钱的使用场景有哪些&#xff1f; 这…

基于YOLOv8深度学习的橙子病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分类

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

【动态规划】Leetcode 746. 使用最小花费爬楼梯

【动态规划】Leetcode 746. 使用最小花费爬楼梯 解法 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 解法 &#x1f612;: 我的代码实现> 动规五部曲 ✒️确定dp数组以及下标的含义 dp[i] 表示跳跃到第 i 层&#x…

「Swift」AttributedString常见使用方法

前言&#xff1a;AttributedString是Apple推出的可以实现单个字符或字符范围带相应属性的字符串。属性提供了一些文本特性&#xff0c;可以让文本展示的样式更加丰富。在日常开发过程中&#xff0c;我通常用于同一个Label中包含不同的字体大小或字体颜色的样式编写中。 使用举…

11 Games101 - 笔记 - 几何(曲线与曲面)

11 几何&#xff08;曲线与曲面&#xff09; 贝塞尔曲线 定义 贝塞尔曲线&#xff1a;由控制点和线段组成的曲线&#xff0c;控制点是可拖动的支点。 如图&#xff0c;蓝色为贝塞尔曲线&#xff0c;p1, p2, p3为控制点&#xff0c;曲线和初始与终止端点相切&#xff0c;并且…

Java解决作为子字符串出现在单词中的索引

Java解决作为子字符串出现在单词中的索引 01 题目 给你一个字符串数组 patterns 和一个字符串 word &#xff0c;统计 patterns 中有多少个字符串是 word 的子字符串。返回字符串数目。 子字符串 是字符串中的一个连续字符序列。 示例 1&#xff1a; 输入&#xff1a;patterns…

【原理图PCB专题】Cadence 17.4版本导出excel版本坐标文件

坐标文件记录了板卡上每个元件的坐标是生产的基础资料,在PCBA生产时,需要提坐标文件并且务必保证 准确无误。 Cadence导出坐标文件大部分网上的都是txt文件,其格式如下。导出的文件存在没有对应的Title,格式打开混乱等问题。 那么Cadence 17.4版本如何导出有标题、…

操作系统内功篇:硬件结构之软中断

一 中断是什么&#xff1f; 在计算机中&#xff0c;中断是操作系统用来响应请求硬件设备的一种机制&#xff0c;操作系统收到硬件的中断请求&#xff0c;会打断正在执行的进程&#xff0c;然后调用内核中的中断处理程序来响应请求。 这样的解释可能过于学术了&#xff0c;容易…