题意

题目的意思,给定一个数字,在从0到小于等于这个数的所有数字,找包含1的数字,并计算所有1的个数。

误区

如果直白的考虑,就比如12,含有1的数字有4个,但是题目要求的是这些数字中一共含1的个数,所以,如果按照找含1数字来解题,那么可能的困难就会很大。

正确的算法

试着把一串数字拆开看,比如12,看成1 2,从右往左依次1号、2号,那么1出现在1号位置的可能:0 1和1 1,两个1;而1出现在2号位置上,则可能:1 0、1 1、 1 2,最后加和,一共5个1。
举个例子:
比如:2019
要找规律,首先要有找规律的次序。不能一股脑的瞎找。所以,一步一步分析,从个位数字开始看:

1出现在个位(1号位)

所有的可能应该是这样的:
000 1、001 1、002 1、……201 1 一共201个1;
注意一点:找规律要完备,不能只顾左而不顾右,下面的理解也是建立完备性的基础上的。

1出现在十位(2号位)

此时开始考虑左右:
00 1x、01 1x …… 19 1 x;这里一共,20 * 10个
加上:
201 x 一共0-9,10个。
所以一共210个。

1出现3号位和4号位

同样按照左右分别进行计算。

核心理解

试着把问题拆分了看待,能够避免直觉上带来的困扰。
这里就体现在1号位、2号位依次单独看。