剑指offer-python刷题-构建乘积数组
发布日期:2021-07-28 12:03:16
浏览次数:6
分类:技术文章
本文共 1256 字,大约阅读时间需要 4 分钟。
题目:给定一个数组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]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)
对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。
解法一:两层循环,内层求累乘,时间复杂度较大
# -*- coding:utf-8 -*-class Solution: def multiply(self, A): # write code here b = [] if len(A) == 1: return None for i in range(len(A)): s = 1 for j in range(len(A)): if j != i: s *= A[j] b.append(s) return b
解法二:动态规划思想
对B[i] = A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1] = left[i] * right[i]
left[i] = A[
0
]*A[
1
]*...*A[i-
1
]
right[i] = A[i+
1
]*...*A[n-
1
]
left[i+
1
] =
left[i]*A[i]
right[i] = right[i-1]*A[i-1]
left[
0
] =
1
right[n-
1
] =
1
这样只需要构建一个新的left和right数组即可降低时间复杂度,但是会增加额外的空间消耗。
# -*- coding:utf-8 -*-class Solution: def multiply(self, A): # write code here left = [1 for i in range(len(A))] right = [1 for i in range(len(A))] for i in range(1,len(A)): left[i] = left[i-1] * A[i-1] right[len(A)-1-i] = right[len(A)-i] * A[len(A)-i] b = [] for i in range(len(A)): b.append(left[i]*right[i]) return b
转载地址:https://blog.csdn.net/sinat_42437278/article/details/118157347 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年03月29日 19时42分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Elmo运动控制器 —— Maestro Software编程实践指南
2019-04-28
Elmo运动控制器 —— Maestro Software结构和接口
2019-04-28
Power PMAC运动控制器 —— 学习笔记2
2019-04-28
运动控制 —— 强大的状态机工具
2019-04-28
Platinum Maestro运动控制器 —— PVT模式笔记
2019-04-28
Platinum Maestro运动控制器 —— 运动程序笔记
2019-04-28
PID算法原理及参数调整原则
2019-04-28
Platinum Maestro运动控制器 ——速度位置等数据的获取
2019-04-28
Platinum Maestro运动控制器 ——Ssh登录控制器
2019-04-28
基础笔记2 —— 不损失精度的前提下浮点数拆分成整型的方法浅析
2019-04-28
数据类型在内存中的存储
2019-04-28
基础笔记1 —— float型数据与其他类型数据的转换问题
2019-04-28
基础笔记3 —— 关于大小端数据存储方式的转换及测试说明
2019-04-28
Platinum Maestro运动控制器 ——修改控制器IP
2019-04-28
关于Elmo驱动器Main Feedback error错误处理
2019-04-28
总线/通信笔记2 —— Modbus TCP 的Client使用
2019-04-28
编码器杂谈 —— 关于绝对值与绝对式编码器的混淆
2019-04-28
控制杂谈1 —— 控制系统上位机与下位机的分工
2019-04-28