class Solution {
public:
int countDigitOne(int n) {
vector<int> vec;
vec.push_back(0);// vec[i] 代表 0 到 i个9的 之间的1的个数
int ret = 0;
int carry= 1;// 1, 10 ,100 。。。。
int num = n;
while (num){
int digit = num % 10;
num /= 10;
ret += digit * vec[vec.size() - 1];
if (digit > 1)
ret += carry;
else if (digit == 1)
ret += n % carry + 1 ;
vec.push_back(10 * vec[vec.size() - 1] + carry);
carry *= 10;
}
return ret;
}
private:
};
leetcode 233 Number of Digit One
最新推荐文章于 2022-05-19 09:36:55 发布