博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【剑指offer python】面试题52:构建乘积数组
阅读量:2382 次
发布时间:2019-05-10

本文共 647 字,大约阅读时间需要 2 分钟。

链接:

题目描述

给定一个数组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]。不能使用除法。

解法一:去除A中序号为i的元素,其他元素乘积就是B[i]

class Solution:    def multiply(self, A):        B = [1]*len(A)        for i in range(0,len(A)):            for j in range(0,len(B)):                if i!=j:                    B[i] *= A[j]        return B

解法二:先求A[0]*...A[i-1],再求A[i+1]*...A[n],最后乘在一起。

class Solution:    def multiply(self, A):        B = [1]*len(A)        temp = 1        for i in range(len(A)):            temp *= A[i-1] if i > 0 else temp            for j in A[i+1:]:                B[i] *= j            B[i] = temp * B[i]        return B

转载地址:http://qyfab.baihongyu.com/

你可能感兴趣的文章
冒号课堂§5.2:数据类型
查看>>
博客搬家
查看>>
冒号课堂§6.2:平台语言
查看>>
《关于信息系统组织方式的一个提案》的评论与反评
查看>>
冒号和他的学生们(连载10)——超级范式
查看>>
冒号和他的学生们(连载9)——泛型范式
查看>>
冒号和他的学生们(连载13)——范式总结
查看>>
A Proposal on Organization of Information System
查看>>
冒号和他的学生们(连载2)——首轮提问
查看>>
正则表达式与文件格式化处理
查看>>
Java EE互联网轻量级框架整合开发
查看>>
Java语言程序设计(基础篇)
查看>>
大型网站技术架构:核心原理与案例分析
查看>>
JAVA并发编程实战
查看>>
RabbitMQ实战++高效部署分布式消息队列
查看>>
微服务设计
查看>>
Spring Cloud微服务实战
查看>>
C++ static 语义
查看>>
C++ static 语义
查看>>
Linux Cgroups概述
查看>>