原题链接
Rabbits and Recurrence Relations
斐波那契数列 n=31,k=5时,兔子个数(n第几个月,k每对兔子可以生多少对兔子)
fib(n::Int, k::Int) = n < 3 ? 1 : k * fib(n-2,k)+fib(n-1,k)
fib(31,5)
原题链接
Rabbits and Recurrence Relations
斐波那契数列 n=31,k=5时,兔子个数(n第几个月,k每对兔子可以生多少对兔子)
fib(n::Int, k::Int) = n < 3 ? 1 : k * fib(n-2,k)+fib(n-1,k)
fib(31,5)
每次用2个函数相加递归开销太大了,还是建议用循环
欢迎分享针对特定问题的Julia实现。如果可能的话,可以考虑把你想分享的内容整合在同一个帖子下面,方便大家浏览。
另外一个类似的项目是 LeetCode.jl
GitHub - JuliaCN/LeetCode.jl: A community driven project to provide solutions for LeetCode problems in the Julia programming language. 和配套的问题/答案链接 Home · LeetCode
从算法角度,斐波那契数列应该用动态规划,O(N) 时间,O(1) 内存。参看 LeetCode.jl-509
# Indigo
function fib(n::Int)::Int
n <= 1 && return n
pre, cur = 0, 1
for _ in 2:n
pre, cur = cur, pre + cur
end
return cur
end
非常欢迎分享和交流题解
推荐试试上边提到的 LeetCode.jl,能学到不少技巧,再回头刷 Rosalind 的题说不定事半功倍~
目前仓库题解500+,有很多补充空间(还能蹭个贡献者
这题 map
和 collect
似乎多余了?比如直接写
hd(s1::String, s2::String) = count(i->s1[i]!=s2[i], eachindex(s1))
贴一道很有意思的题目,这种解法似乎只有 Julia 能这么干
原题链接:LeetCode-917-仅仅翻转字母
简述:将英文字母反转,非英文字母保留在原有位置。
示例: "Test1ng-Leet=code-Q!" => "Qedo1ct-eeLg=ntse-T!"
Julia 代码
function reverse_only_letters(s::String)
chars = collect(s)
reverse!(@view(chars[isletter.(chars)]))
return join(chars)
end
函数第二行将英文字母原地反转,简洁无废话。。。