gpt4 book ai didi

haskell - Haskell 中列表的倒数第二个元素

转载 作者:行者123 更新时间:2023-12-02 02:49:10 25 4
gpt4 key购买 nike

考虑以下用于查找列表的倒数第二个元素的函数:

myButLast (x:xs) = if length xs > 1 then myButLast xs else x

这是一个 O(n^2) 算法,因为 length xs是 O(n),称为 O(n) 次。在 Haskell 中编写此内容的最优雅方式是什么,例如 length一旦超过 1 就停止,所以算法是 O(n)?

最佳答案

最简单的方法是避免length :

myButLast (x : _ : []) = x  -- base case
myButLast (_ : xs) = myButLast xs

Haskell 模式的权威引用是语言报告: https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-580003.17

GHC 实现了一些在 https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/syntax-extns.html#pattern-guards 中描述的扩展.

关于haskell - Haskell 中列表的倒数第二个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33068428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com