digit-counts
来源:互联网 发布:江西师大网络教学平台 编辑:程序博客网 时间:2024/05/16 07:03
计算数字k在0到n中的出现的次数,k可能是0~9的一个值
您在真实的面试中是否遇到过这个题?Yes
样例
例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)
暴力解法:
class Solution {public: int digitCounts(int k, int n) { int ans=0; for(int i=0;i<=n;i++){ ans+=count(i,k); } return ans; } int count(int num,int k){ string tmp=to_string(num); int res=0; for(int i=0;i<tmp.size();i++){ if(tmp[i]-'0'==k) res++; } return res; }};
线性时间复杂度O(n):
class Solution {public: /* * param k : As description. * param n : As description. * return: How many k's between 0 and n. */ int digitCounts(int k, int n) { // write your code here if(n==0){ return k==0?1:0; } int digits=0; int p=1; while(n>=p){ digits++; p*=10; } int back=0; int cur=n%10; int pre=n/10; int res=0; int cnt=1; while(cnt<=digits){ if(cur>k){ res+=(pre+1)*pow(10,cnt-1); }else if(cur==k){ res+=pre*pow(10,cnt-1)+back+1; }else{ res+=pre*pow(10,cnt-1); } back=cur*pow(10,cnt-1)+back; cur=pre%10; pre=pre/10; cnt++; } return k==0?res-10:res; }};
0 0
- digit-counts
- lintcode:Digit Counts
- #3 Digit Counts
- **[Lintcode]Digit Counts
- Digit Counts 解题报告
- Lintcode 3:Digit Counts
- Problem 63 Powerful digit counts
- Project Euler 题解 #63 Powerful digit counts
- Project Euler:Problem 63 Powerful digit counts
- 3.Digit Counts-统计数字(中等题)
- 算法学习笔记--7.digit-counts
- Adjacent Bit Counts(P3786)
- Incrementing Counts in SQL
- hdu 4486 pen counts
- Uva 6174 Pen Counts
- hdu 4486 Pen Counts
- Hdu 4486 Pen Counts
- < Linux Kernel > Reference Counts
- 2015河南科技学院CSDN高校俱乐部---见面会
- GreenDao 使用教程 一
- 高效率http retrofit2.0.2 最新版本
- 修改linux最大连接数
- 选项菜单
- digit-counts
- 进程与进程,进程与内核间通信(netlink)
- led灯点亮
- IntelliJ IDEA 使用心得与常用快捷键
- 链表删除节点--算法复杂度o(1)
- Flume学习11_Flume1.5.0的安装使用及传输数据到Hadoop2.2
- 请求转发与重定向
- 【HDU5543 2015 CCPC 南阳国赛D】【贪心+DP】Pick The Sticks 木棍重心放在容器内 贪心法+三维状态直接法
- Android动画之补间动画