ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
<div id="div31"><h4> 31, 1~n整数中1出现的次数 <h4></div> ~是按位取反的意思,~~就是再转回来,两个按位取反,类型的转换成数字符号。 ```javascript // 暴力解法 function NumberOf1Between1AndNSolution(n) { let ones = 0; for (let i = 0; i <= n; i++) { let num = i; while (num) { if (num % 10 === 1) { ones++; } num = ~~(num / 10); } } return ones; } // 优化版 function NumberOf1Between1AndNSolution2(n) { if (n <= 0) return 0; let count = 0; for (let i = 1; i <= n; i *= 10) { const a = ~~(n / i), b = n % i; count = count + ~~((a + 8) / 10) * i + (a % 10 === 1) * (b + 1); } return count; } ```