算法题一道,tecent题目,请教各位

xuxichun 2008-04-04 03:41:16
已知:A1 A2 A3 A4 ... An
B1 = A2*A3* ...*An
B2 = A1*A3* ...*An
Bn-1 = A1*...*An-2*An
Bn = A1*A2*...*An-1
求出各个Bi(i= 1,2 ...,n)
要求不能用除法(除法效率太低),时间负责度为nlog(n),
...全文
889 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
中间件XL 2011-10-29
  • 打赏
  • 举报
回复
可以建模矩阵解决问题,
设a[n,n], 并令a[i,x]=Ai, i=1~n; a[i,i]=0,即矩阵对角线为0
则,得出如下矩阵
0 A1 A2 ... An
A1 0 A3 ...
...
A1 A2 ... 0
得,Bi为矩阵第i行的和,
设bi1=a[i,1]+...+a[i,i-1],
bi2=a[i,i+1]+...+a[i,n]
即以对角线为分界,每列的左右分别求和,
可得Bi=bi1+bi2,
又有下三角的关系:
b1=0
b(i+1)1=bi1+Ai,这个求和空间复杂度为n, 时间复杂度为nlogn
同样可求上三角bi2
最后根据Bi=bi1+bi2,求出Bi, 时间复杂度n


my1111ym 2011-10-22
  • 打赏
  • 举报
回复
mark~
oyzdz1988 2011-10-18
  • 打赏
  • 举报
回复
二楼的方法确实挺好,但不符合题目要求,题目是想考查二分查找的应用吧~
O(nlgn)的方法:
先要构造A[n]序列的二叉树,需要O(n)的存储空间,这个二叉树如下所示,以n=8为例子:
(A1*A2*A3*A4*A5*A6*A7*A8)
/ \
(A1*A2*A3*A4) (A5*A6*A7*A8)
/ \ / \
(A1*A2) (A3*A4) (A5*A6) (A7*A8)
/ \ / \ / \ / \
A1 A2 A3 A4 A5 A6 A7 A8
构造这个树需要O(nlgn)的时间,以后计算B[i]的修改去查这个树即可,以i为索引值,计算中只需要更新相应的一个分支即可,每次更新的复杂为O(lgn),即可得到最终的值。
  • 打赏
  • 举报
回复
恩,2楼那个就是对的那个,顶一下
  • 打赏
  • 举报
回复
补一句就是我那算法时间是线性
  • 打赏
  • 举报
回复
http://blog.csdn.net/chris820313/article/details/6851456

看我的博客,话说这不是搜狗的笔试题么!!
腾迅这他妈也抄啊!!!
fellatioyzx 2011-10-18
  • 打赏
  • 举报
回复
无视我吧,我没看到括号。。。
fellatioyzx 2011-10-18
  • 打赏
  • 举报
回复
为嘛不先把所有A都乘起来,在挨个除一下每个A_k呢,这样遍历两遍数组就够了
如果怕越界,可以先除后乘,即B_k = B_k-1 / A_k * A_k-1
ccc43542876 2011-10-17
  • 打赏
  • 举报
回复
我算了,貌似2楼的算不出题目要求的值吧。当i=1时 b1=A1*A2……AN了。。明显和题目要求不对呀。除法是肯定不可以用的,要是能用除法,Tencent的人就可以吃BB了。
qq1990118268 2011-10-10
  • 打赏
  • 举报
回复
如果是我的话想出的肯定是8楼的,2楼能想出这样的方法,高手。。但是我觉得8楼的方法好像速度还会快一些吧。
hzkjdxwktx 2011-10-10
  • 打赏
  • 举报
回复
貌似和快速傅里叶变换类似的思路啊
showjim 2011-10-09
  • 打赏
  • 举报
回复
O(n)的时候只需要一个栈,另一边可以实时计算
ywf550230785 2011-10-05
  • 打赏
  • 举报
回复
2楼是牺牲了空间换取的时间
shine19910530 2011-10-05
  • 打赏
  • 举报
回复
值得学习
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
都是很好的建议! 值得学习
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
我也想了解,谢谢LZ.
62guangye 2008-04-11
  • 打赏
  • 举报
回复
学习一下
chuengchuenghq 2008-04-11
  • 打赏
  • 举报
回复
kan kan
matchboy 2008-04-11
  • 打赏
  • 举报
回复
mark
tsasdf 2008-04-10
  • 打赏
  • 举报
回复
8楼说得对,2楼的方法不好。
目前还没见到一个办法是比较好的。
加载更多回复(21)

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧