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

除自身以外数组的乘积——面试经典150题(力扣)

题目

给你一个整数数组 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 <= nums.length <= 105
  • -30 <= nums[i] <= 30
  • 输入 保证 数组 answer[i] 在  32 位 整数范围内

进阶:你可以在 O(1) 的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组 不被视为 额外空间。)

题解

class Solution(object):
    def productExceptSelf(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        n = len(nums)
        answer = [1] * n
        
        left_product = 1
        for i in range(n):
            answer[i] = left_product
            left_product *= nums[i]
        
        right_product = 1
        for i in range(n - 1, -1, -1):
            answer[i] *= right_product
            right_product *= nums[i]
        
        return answer

代码说明

  1. 第一次遍历:从左到右遍历数组,计算每个位置左边所有元素的乘积,并存储在一个数组 left 中。

  2. 第二次遍历:从右到左遍历数组,计算每个位置右边所有元素的乘积,并存储在一个数组 right 中。

  3. 最终结果:将 left 和 right 数组对应位置相乘,得到最终的结果。


http://www.kler.cn/a/597627.html

相关文章:

  • 基于Python+Ollama DeepSeek与MySQL进行数据分析探索
  • Rocky9.5基于sealos快速部署k8s集群
  • OpenHarmony子系统开发 - 电源管理(二)
  • 二进制求和 力扣67
  • AutoSar:软件革命还是技术陷阱?
  • 算法训练营第二十天 | 回溯算法(二)
  • gin中间件学习笔记
  • 区块链学习总结
  • JavaScript性能优化实战,日常开发中的案例与优化技巧
  • 【Java】grpc-java在IDEA中build不成功的相关问题,Android,codegen C++语言排除
  • 杨辉三角Ⅱ 力扣119
  • 知识图谱中NLP新技术
  • ORACLE 19.8版本数据库环境EXPDP导数据的报错处理
  • 基于Java(springMVC+hibernate)+Mysql实现(Web)客栈服务系统
  • 自然语言处理|BART:文本摘要的智能工具
  • 防逆流检测仪表在分布式光伏发电系统中的应用
  • Linux 告警:使用企业微信发送通知
  • 利用ffmpeg库实现音频AAC编解码
  • PyTorch 深度学习实战(18):分布式强化学习与 IMPALA 算法
  • 音视频框架详解