题解 | #比特位计数#Erlang位数规律

比特位计数

http://www.nowcoder.com/questionTerminal/c62ba9dade41416b99c33d8c3326259c

解题思路

每个Num的1的个数是Num div 2(即Num向右移动1位的结果)的1的个数加上Num rem 2(即与2取余后的代表奇偶数的那个1)得到的总个数

代码

-spec count_bits(N :: integer()) -> [integer()].
count_bits(N) ->
    do_conut_bits(0, _MapTemp = #{}, _ListOut = [], _Args = #{count => N}).

do_conut_bits(N, MapTemp, ListOut, Args = #{count := Count}) when N =< Count ->
    Bit = maps:get(N div 2, MapTemp, N) + (N rem 2),
    do_conut_bits(N + 1, MapTemp#{N => Bit}, [Bit | ListOut], Args);
do_conut_bits(_, _, ListOut, _) ->
    lists:reverse(ListOut).
全部评论

相关推荐

2025-12-15 14:25
云南大学 Java
lei22:入职可能会看学信网,最好别伪装,这个简历找实习肯定是够的,肯定会有收 28 届实习生的公司的,多投就行
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务