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

除自身以外数组的乘积——面试经典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 数组对应位置相乘,得到最终的结果。

相关文章:

  • 每天一道算法题-两数相加
  • C++编程语言特性
  • Android Jetpack Compose介绍
  • 238.除自身以外数组的乘积
  • 【sgHelp】自定义组件:网站、平台右下角的帮助助手、指导助理
  • app测试必须进行吗?需要进行哪些测试?
  • 混元视频与万相2.1全面对比分析
  • 嵌入式笔记 | 正点原子STM32F103ZET6 4 | 中断补充
  • 搭建个人博客教程(Hexo)
  • Django+celery+flower
  • 【文件分类助手V1.0b】支持自定义后缀分类整理及目录文档自动生成,方便大家美化管理自己的PC文件库支持Win10/11
  • 【从零开始学习计算机科学与技术】计算机网络(三)数据链路层
  • 蓝桥杯备考---》分类讨论之Fixed Points
  • 在Ubuntu20.04上交叉编译能在Windows上运行的Qt5应用
  • Vue3 集成wangEditor 5
  • 鸿蒙开发真机调试:无线调试和USB调试
  • MQ,RabbitMQ,MQ的好处,RabbitMQ的原理和核心组件,工作模式
  • LeetCode 解题思路 22(Hot 100)
  • 9.嗅探与Wireshark进阶分析
  • 使用Python在Word中创建、读取和删除列表 - 详解
  • 国家统计局:4月份各线城市商品住宅销售价格环比持平或略降
  • 因救心梗同学缺席职教高考的姜昭鹏顺利完成补考
  • 高瓴、景林旗下公司美股持仓揭晓:双双增持中概股
  • 刘小涛任江苏省委副书记
  • 关税互降后的外贸企业:之前暂停的订单加紧发货,后续订单考验沟通谈判能力
  • 俄乌官员即将在土耳其会谈,外交部:支持俄乌开启直接对话