计算数字k在0到n中的出现的次数,k可能是0~9的一个值。
eg:例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)
不知道大家对这个题的第一反应是什么,我对此的第一反应是
整个算法复杂度相当复杂,但是,智商有限啊啊,能做出来感觉就ok了。
最后在上看到有人用java写的一个算法,虽然复杂度也不低,但是目测实现起来也不是很难吧。 算法思路大体是:
将所有的n拼接成一个大的字符串。然后遍历字符串,将其与目标数k进行比对复杂度为n啊。 const digistCounts=function (k,n) { let count=0; let str=''; k=k+''; for(let i=0;i<=n;i++){ str+=i; } for(let j=0;j<str.length;j++){ if(str[j]===k){ count++; } } return count; };就这样吧,感觉自己智商根本不在线。
参考算法1 参考算法2
