zoukankan      html  css  js  c++  java
  • 剑指Offer 66 构建乘积数组

    构建乘积数组

    给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。

     1 # -*- coding:utf-8 -*-
     2 class Solution:
     3     def multiply(self, A):
     4         n = len(A)
     5         mat = [[1 for _ in range(n)]for _ in range(n)]
     6         for i in range(n):
     7             for j in range(n):
     8                 if i != j:
     9                     mat[i][j] = A[j]
    10         B = [1] * n
    11         for i in range(n):
    12             mul = 1
    13             for j in range(n):
    14                 mul *= mat[i][j]
    15             B[i] = mul
    16         return B
    17         # write code here

    思路:先构建mat二维数组,这个矩阵的特点是,主对角线都是1。从每一行来看,除了在主对角线上的元素为1,其余元素与A对应位置相同。

    利用上面的步骤建立好的二维数组,进行本题的计算,只需要将每一行所有元素相乘就可以得到B中的对应值。 

  • 相关阅读:
    反射
    IO流
    集合(下)
    集合(上)
    泛型
    异常
    常用类
    内部类
    将博客搬至CSDN
    DBMS_ERRLOG记录DML错误日志(二)
  • 原文地址:https://www.cnblogs.com/asenyang/p/11025305.html
Copyright © 2011-2022 走看看