LeetCode-238. 除自身以外数组的乘积-刷题思路分享

2019-03-05  本文已影响0人  小小尧

看代码注释

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
                # 看到这个问题,第一眼反应是2个 for 循环解决问题,但是:1、请不要使用除法;2、在 O(n) 时间复杂度内完成此题。emmmmm——小尧
        n=len(nums)
        leftPro,rightPro,output = [1]*n, [1]*n, [1]*n
        for i in range(0,n-1):
            print(i)
            leftPro[i+1]=nums[i]*leftPro[i] # 非常简单,我们可以遍历nums,在遍历的过程中将对应元素累乘,这样我们就得到了对应元素左边所有元素的乘积。
            rightPro[n-i-2]=nums[n-i-1]*rightPro[n-i-1] # 然后我们反向遍历nums,做相同操作即可
        for i in range(0,n):
            output[i]=leftPro[i]*rightPro[i] # 再将两个结果相乘即可。
        return output
AC截图
上一篇下一篇

猜你喜欢

热点阅读