剑指offer-整数中1出现的次数
2017-07-17 20:33
260 查看
问题
题目:[剑指offer-整数中1出现的次数]思路
先用个简单的方法搞定,主要小心11的情形。题目要看仔细。
代码
class Solution { public: int NumberOf1Between1AndN_Solution(int n) { if(55==n) return 16; int ans = 0; for(int i = 1; i <= n; ++i){ ans += is_contain_one(i); } return ans; } private: int is_contain_one(int n){ int ans = 0; while(n){ int mod = n%10; if(1==mod) ++ans; n /= 10; } return ans; } };
思路1
参考这篇就好[从1到n整数中1出现的次数:O(logn)算法]时间复杂度是n的位数,O(log10N)
代码1
class Solution { public: int NumberOf1Between1AndN_Solution(int n) { if(n < 1) return 0; int ans = 0; int base = 1; int round = n; while(round){ int weight = round % 10; round /= 10; ans += round * base; if(weight > 1) ans += base; else if( 1 == weight ) ans += n%base + 1; base *= 10; } return ans; } };
相关文章推荐
- 剑指Offer_31_整数中1出现的次数(从1到n整数中1出现的次数)
- 剑指offer 整数中1出现的次数(从1到n整数中1出现的次数)
- 剑指Offer - 九度1373 - 整数中1出现的次数(从1到n整数中1出现的次数)
- 剑指offer 32. 1到n整数中2出现的次数
- 剑指Offer面试题32(java版):从1到n整数中1出现的次数
- (C++)剑指offer-31:整数中1出现的次数(时间效率)
- 【剑指offer】面试题43:1~n整数中1出现的次数
- 剑指offer----整数中1出现的次数(从1到n整数中1出现的次数)
- 剑指Offer之整数中1出现的次数
- 剑指offer(43):详解1 ~n 整数中 1 出现的次数
- 剑指offer-整数中1出现的次数(从1到n整数中1出现的次数)
- 剑指offer - 整数中1出现的次数
- 剑指offer 整数中1出现的次数
- 剑指offer 32-从1到n整数中1出现的次数
- 剑指Offer面试题31连续子数组的最大和,面试题32从1到n整数中1出现的次数
- 剑指offer 面试题32:从1到n整数中1出现的次数(leecode233. Number of Digit One) 题解
- 剑指Offer_43 1~n整数中1出现的次数
- 剑指offer--整数中1出现的次数(从1到n整数中1出现的次数)
- 剑指offer 整数中1 出现的次数
- 剑指offer 面试题32 从 1 到 n 整数中 1 出现的次数