整数中出现1的次数

整数中1出现的次数(从1到n整数中1出现的次数)

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

数字从小到大,把每个数包含的1的个数放到一个字典里去。
每一个大数分解成最高位+余下数,比如2021分解为2和021两部分,分别判断最高位和分出来的那部分相加即可,缺点是比较费空间

# -*- coding:utf-8 -*-
import collections
class Solution:
    def NumberOf1Between1AndN_Solution(self, n):
        # write code here
        sum = 0
        numLib = {}
        N = 1
        for num in range(n+1):
            numLib.setdefault(num,0)
            numLib[num]=(numLib[num % N]+int(num//N==1))
            sum+=numLib[num]
            if num==10*N-1:
                N*=10
        return sum













全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务