【发布时间】:2010-07-18 14:54:51
【问题描述】:
给你一个包含 n 个数字 L=<a_1, a_2,...a_n> 的列表。他们每个人都是
0 或 +/- 2k, 0 p=a_i*a_i+1*...*a_j, 1 <= i <= j <= n.
例如,对于输入 <8 0 -4 -2 0 1>,它应该返回 8(或者 8
或 (-4)*(-2))。
您可以使用任何标准的编程语言,并且可以假设
该列表以任何标准数据结构给出,例如int[],
vector<int>、List<Integer>等
你的算法的计算复杂度是多少?
【问题讨论】:
-
请看一下我新编辑的答案中的伪代码,它似乎比接受的答案更有效。
-
@Peter G:看起来很复杂,我不知道它是否正确,但如果是的话,你已经做得很好了!看起来像一个 O(n) 解决方案。
-
与问题没有直接关系,但对于那些可能遇到此页面并试图找到使用 Java 处理大数的库例程的人,请参阅 BigDecimal 或 BigInteger 类
-
@Carl 我添加了一些解释 cmets。
标签: java arrays multiplication