Hot100 - 除自身以外数组的乘积

ops/2024/11/28 8:49:41/

Hot100 - 除自身以外数组的乘积

思路图

最佳思路:

此问题的关键在于通过两次遍历,分别计算从左侧和右侧开始的累积乘积,以此避免使用额外的除法操作。

时间复杂度:

算法的时间复杂度为 O(n),因为我们只需要遍历数组两次。

思路解析:

  1. 初始化两个辅助数组 leftirighti,分别用来存储从左到右和从右到左的累积乘积。
  2. 第一次遍历:从左到右计算每个位置的左侧累积乘积,存储在 lefti 中。
  3. 第二次遍历:从右到左计算每个位置的右侧累积乘积,存储在 righti 中。
  4. 结果计算:利用 leftirighti 数组,逐一计算除自身以外的乘积。最终,直接用 lefti[i-1]righti[i+1] 来获得该位置的结果。

算法优化:

使用两个额外的数组来存储左右乘积信息,而不是直接修改原数组。这样可以避免在计算时出现覆盖问题。

代码实现:

class Solution {public int[] productExceptSelf(int[] nums) {// 初始化累积乘积变量int left = 1;int right = 1;// 创建左右乘积的辅助数组int[] lefti = new int[nums.length]; int[] righti = new int[nums.length]; // 第一次遍历:计算左侧累积乘积for (int i = 0; i < nums.length; i++) {left *= nums[i];lefti[i] = left;// 第二次遍历:计算右侧累积乘积right *= nums[nums.length - i - 1];righti[nums.length - i - 1] = right;}// 根据左右累积乘积计算最终结果nums[0] = righti[1];nums[nums.length - 1] = lefti[nums.length - 2];for (int i = 1; i < nums.length - 1; i++) {nums[i] = lefti[i - 1] * righti[i + 1];}return nums;}
}

http://www.ppmy.cn/ops/137309.html

相关文章

【风水】-- 如何挑选吉日入住

目录 1. 五行与方位的配合 2. 八卦与方位的搭配 3. 选择吉日的原则 4. 阴阳与天干地支的匹配 5. 选择吉日的具体步骤 6. 个人八字与吉日的结合 总结 挑选入住新房或旧房的吉日是风水学中的一项重要传统&#xff0c;旨在通过选择合适的时机来调整和增强居住者的运势。从风…

【漏洞复现】CVE-2022-24697

漏洞信息 NVD - CVE-2022-24697 Kylin’s cube designer function has a command injection vulnerability when overwriting system parameters in the configuration overwrites menu. RCE can be implemented by closing the single quotation marks around the parameter…

理解并使用Linux内核XArray

理解并使用Linux内核XArray 1. 引言 大家好&#xff0c;今天咱们来聊聊Linux内核中的一个强大工具——XArray。如果你对数据结构感兴趣&#xff0c;或者正在开发内核模块&#xff0c;那么这篇文章绝对适合你。我会尽量用轻松幽默的方式带你走进XArray的世界。 2. XArray简介…

java——spring中事务怎么实现的?原理是什么?

在Spring框架中&#xff0c;事务管理是一个核心功能&#xff0c;它提供了两种主要的事务实现方式&#xff1a;声明式事务和编程式事务。下面分别介绍这两种实现方式及其底层原理。 一、Spring事务的实现方式 声明式事务 声明式事务管理通过注解或XML配置的方式&#xff0c;将事…

第十三章 使用 DHCP 动态管理主机地址

1. 动态主机配置协议 动态主机配置协议&#xff08;DHCP&#xff09;是一种基于 UDP 协议且仅限于在局域网内部使用的网络协议&#xff0c;主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中&#xff0c;用途是为局域网内部的设备或网络供应商自动分配 IP 地…

【Leetcode Top 100】240. 搜索二维矩阵 II

问题背景 编写一个高效的算法来搜索 m n m \times n mn矩阵 m a t r i x matrix matrix中的一个目标值 t a r g e t target target。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 数据约束 m m a t r i x . l e n g t h m …

HarmonyOS4+NEXT星河版入门与项目实战(22)------动画(属性动画与显示动画)

文章目录 1、属性动画图解2、案例实现-小鱼移动游戏1、代码实现2、代码解释3、资源图片4、实现效果3、显示动画4、案例修改-显示动画5、总结1、属性动画图解 这里我们用一张完整的图来汇整属性动画的用法格式和使用的主要属性范围,如下所示: 2、案例实现-小鱼移动游戏 1、代…

量化交易系统开发-实时行情自动化交易-4.4.1.做市策略实现

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来继续说说做市策略实现。 做市策…