题解 | 整数中1出现的次数(从1到n整数中1出现的次数)
class Solution { public: // 简化官方题解的公式,写更clean的code。 int NumberOf1Between1AndN_Solution(int n) { int res = 0; long long MulBase = 1; //循环的基数 for (int i = 0; MulBase <= n; i++) { // 先统计走完了整个基数的部分 res += (n / (MulBase * 10)) * MulBase; // 统计余数部分 int tail = n % (MulBase * 10); if (tail >= MulBase * 2) { res += MulBase; } else if (tail >= MulBase) { res += tail - MulBase + 1; } MulBase *= 10; //扩大一位数 } return res; } };