考虑以下两个累积和(cumsum)函数:
cumsum :: Num a => [a] -> [a]
cumsum [] = []
cumsum [x] = [x]
cumsum (x:y:ys) = x : (cumsum $ (x+y) : ys)
Run Code Online (Sandbox Code Playgroud)
和
cumsum' :: Num a => [a] -> [a]
cumsum' x = [sum $ take k x | k <- [1..length x]]
Run Code Online (Sandbox Code Playgroud)
当然,我更喜欢的定义cumsum到的cumsum',我知道,前者具有线性复杂度.
但为什么cumsum'还有线性复杂性呢?take本身具有线性复杂性在其参数的长度和k从运行1到length x.因此,我预计二次复杂度为 cumsum'.
而且,常数cumsum'低于cumsum.这是由于后者的递归列表附加吗?
注意:欢迎任何累积金额的明智定义.
编辑:我正在测量执行时间(:set +s …
在以下reduction + map操作中,没有。3让我感到困惑。谁能解释为什么
// 1
[1,2,3,4,5].filter(x => x==3).reduce((x, y) => y) // -> 3, all good
// 2
[1,2,3,4,5].filter(x => x<=3).reduce((x, y) => 0) // -> 0, still good
// 3
[1,2,3,4,5].filter(x => x==3).reduce((x, y) => 0) // -> 3, hello?
Run Code Online (Sandbox Code Playgroud)
换句话说:如何减少一个元素的数组而忽略0操作映射?最终,它将用于对象数组,因为对象数组.reduce((x,y) => y.attr)也返回y而不是y.attr用于单个元素数组。
我有一个 Map<Integer,Integer>
1 10
2 10
3 20
5 20
6 11
7 22
Run Code Online (Sandbox Code Playgroud)
如何找到地图的最大重复值?在这种情况下 - 即10和20.两种情况下重复计数为2.
我正在学习 Apache Tomcat,但我不明白下面一行中的术语“实现” 。我认为 Tomcat运行Java Servlet 和 JavaServer Pages (JSP)。
Tomcat 实现 Sun Microsystems 的 Java Servlet 和 JavaServer Pages (JSP) 规范
Tomcat 是否实现或运行Java Servlet 和 JavaServer Pages (JSP)?