zoukankan      html  css  js  c++  java
  • 238. 除自身以外数组的乘积

    给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

    示例:

    输入: [1,2,3,4]
    输出: [24,12,8,6]

    提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。

    思路:使用左边乘积和右边乘积进行计算。

    初始化数组长度n。初始化res=[0,0,...,0]。

    初试化乘积k=1:

    从左向右遍历,遍历区间[0,n):res每个位置保存它左侧所有元素的乘积。即res[i]=k , k*=nums[i]     

     重置乘积k=1,用来保存元素右边的乘积和:

    从右向左遍历,遍历区间(n,0]:res[i]*=k,表示将当前位置的左积乘以右积。

    复杂度分析
    时间复杂度:O(n),进行了两次次遍历。
    空间复杂度:O(n),借助res保存结果

    class Solution:
        def productExceptSelf(self, nums: List[int]) -> List[int]:
            n=len(nums)
            res=[0]*n
            k=1
            for i in range(n):
                res[i]=k
                k=k*nums[i]
            k=1
            for i in range(n-1,-1,-1):
                res[i]*=k
                k*=nums[i]
            return res


    链接:https://leetcode-cn.com/problems/product-of-array-except-self/solution/bao-cun-zuo-ji-he-you-ji-python3-by-zhu_shi_fu/

  • 相关阅读:
    18-行列式及其性质
    17-正交矩阵和Gram-Schmidt正交化
    14-正交向量与子空间
    centOS7.3 离线安装docker
    10-四个基本子空间
    使用vim打造python-ide
    09-线性相关性、基、维数
    python小实例
    Elasticsearch学习之ES节点类型以及各种节点的分工
    基于Kibana和ES的苏宁实时日志分析平台
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/12884908.html
Copyright © 2011-2022 走看看