Hard-题目26:233. Number of Digit One
来源:互联网 发布:试卷编辑软件 编辑:程序博客网 时间:2024/05/17 01:13
题目原文:
Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.
For example:
Given n = 13,
Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13.
题目大意:
问[1,n]的整数里面有多少个数字1?
题目分析:
纯数学题,由@1401-高洪帆给出公式f(n)的数学形式,具体是什么我推不出来了,翻译成计算机代码将就看吧。
源码:(language:java)
public class Solution { public int countDigitOne(int n) { int[] powers = new int[]{0,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000,2147483647}; int k=0; if(n==2147483647) k=10; else { while(powers[k]<=n) k++; } if(n<=0) return 0; else if(n>=1 && n<10) return 1; else { k--; return countDigitOne(powers[k]-1)*(n/powers[k])+countDigitOne(n%powers[k])+(n>=2*powers[k]?powers[k]:n-powers[k]+1); } }}
成绩:
0ms,7.97%,0ms,92.03%
cmershen的碎碎念:
听说acm中有很多题可以直接推出数学公式,但求职的机试中好像还是更侧重计算机算法吧。
0 0
- Hard-题目26:233. Number of Digit One
- LeetCode算法题目:Number of Digit One
- 233. Number of Digit One
- 233. Number of Digit One
- 233. Number of Digit One
- 233. Number of Digit One
- 233. Number of Digit One
- 233. Number of Digit One
- 233. Number of Digit One
- leetcode hard模式专杀之233. Number of Digit One
- Number of Digit One
- Number of Digit One
- Number of Digit One
- Number of Digit One
- Number of Digit One
- Number of Digit One
- Number of Digit One
- Number of Digit One
- Java操作数据库
- STM32库函数EXTI_GetFlagStatus和EXTI_GetITStatus的区别
- easyui中combobox添加滚动条的方法
- Hard-题目25:282. Expression Add Operators
- PHP中利用PHPMailer配合QQ邮箱实现发邮件
- Hard-题目26:233. Number of Digit One
- 关于C# wpf DataGrid单元格双击设置单元格内容
- 全民线下观影约约约!乐视这次又在打什么算盘?
- win7开启telnet
- Map之一个Key存多个Value的MultiValueMap(一个键多个值)
- 从键盘输入一个实型数据,求出它的整数部分和小数部分。
- Phoenix通过sql语句更新操作hbase
- 合并两个有序链表
- C#多线程