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

【hot100】刷题记录(7)-除自身数组以外的乘积

题目描述:

给你一个整数数组 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 位 整数范围内

 

我的作答:

第一次接触上三角和下三角的概念呃呃呃

class Solution(object):
    def productExceptSelf(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        if not nums: return None
        pre = [1]*len(nums)
        pre[0] = nums[0]
        back = [1]*len(nums)
        back[-1] = nums[-1]
        result = []
        for left in range(1, len(nums)):
            pre[left] = pre[left-1]*nums[left] #下三角
        for right in range(len(nums)-2, -1, -1):
            back[right] = back[right+1]*nums[right] #上三角
        for i in range(len(nums)):
            if i==0: result.append(back[1])
            elif i==len(nums)-1: result.append(pre[i-1])
            else:
                result.append(pre[i-1]*back[i+1])
        return result

 

参考:

其实在另一个三角的时候就可以乘积了

class Solution(object):
    def productExceptSelf(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        ans, tmp = [1] * len(nums), 1
        for i in range(1, len(nums)):
            ans[i] = ans[i - 1] * nums[i - 1] # 下三角
        for i in range(len(nums) - 2, -1, -1):
            tmp *= nums[i + 1]                # 上三角
            ans[i] *= tmp                     # 下三角 * 上三角
        return ans

 


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

相关文章:

  • 论文阅读(七):贝叶斯因果表型网络解释遗传变异和生物学知识
  • 免杀国内主流杀软的恶意样本分析
  • c#使用log4Net配置日志文件
  • 【PowerQuery专栏】PowerQuery实现数据库访问系列函数
  • HDFS安全模式
  • 2025.1.26机器学习笔记:C-RNN-GAN文献阅读
  • 如何构建树状的思维棱镜认知框架
  • 为什么“记住密码”适合持久化?
  • 架构知识整理与思考(其四)
  • 从零搭建一个Vue3 + Typescript的脚手架——day3
  • LeetCode:63. 不同路径 II
  • 在K8s中部署动态nfs存储provisioner
  • 基于 Redis GEO 实现条件分页查询用户附近的场馆列表
  • React第二十八章(css modules)
  • 在彼此的根系里呼吸
  • OpenEuler学习笔记(十七):OpenEuler搭建Redis高可用生产环境
  • V103开发笔记1-20250113
  • 类文件结构
  • Baklib如何提升企业知识管理效率与市场竞争力的五大对比分析
  • FFmpeg rtmp推流直播
  • 道氏理论简介
  • Baklib深入解析企业内容管理与内容中台的本质差异
  • P1044 [NOIP2003 普及组] 栈 C语言
  • Autogen_core: ClosureAgent使用与测试
  • selenium定位网页元素
  • 如何使用深度学习中的 Transformer 算法进行视频目标检测