题解 | #比特位计数#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).
全部评论

相关推荐

点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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