首页 > 试题广场 >

对于移动平均算法,是计算某变量之前n个数值的算术平均,正确的

[不定项选择题]
对于移动平均算法,是计算某变量之前n个数值的算术平均,正确的说法是:
  • 空间复杂度是O(l)
  • 空间复杂度是O(n)
  • 空间复杂度是O(logn)
  • 空间复杂度是O(nlogn)
注意这道题是空间复杂度,不是时间复杂度。空间复杂度是O(1)。时间复杂度是O(n)。
发表于 2015-09-08 17:06:51 回复(0)
 任何一个算法不同情况下可能有多种解法,一般我们以时间复杂度为评判的话,就会用牺牲空间换时间。
这个算法最明显的有两种解法,
1.每次进来一个变量n,就遍历前面n个数,然后求和,再取平均,这样的话时间复杂度为O(n),空间为O(1);
2.以空间换时间:从前往后没计算一次保留一次求和值到一个辅助空间,这样计算下一个的时候直接取得前一个和值加上当前数,再取平均得到当前平均,这样的话时间复杂度为O(1),空间为O(n) 
发表于 2015-09-08 17:28:00 回复(19)
就没有人吐槽题目说的是多选吗?最后答案是单选,这玩笑开的可不怎么好
发表于 2018-09-04 21:57:39 回复(1)
算法应该只需要保存一个“和”(int或者其他类型),所以空间复杂度为1
发表于 2015-09-08 17:04:47 回复(0)
你确定这是1而不是l吗?
发表于 2020-07-18 10:25:12 回复(0)
有点坑,时间复杂度为O(n), 空间复杂度为O(1),当然空间复杂度也可以为O(n)。
发表于 2023-11-08 21:57:13 回复(0)
多选题?
发表于 2021-12-18 19:53:04 回复(0)
空间复杂度。。shit
发表于 2017-04-08 11:01:52 回复(0)
要区分空间复杂度与时间复杂度的概念。
发表于 2016-06-02 20:48:31 回复(0)
是不是应该A和B都对啊,时间复杂度为O(1),空间复杂度就为O(n);如果时间复杂度为O(n),空间复杂度九尾O(1)
发表于 2016-04-24 19:12:15 回复(0)