剑指Offer——1~n整数中1出现的次数(JS实现)

简介: 剑指Offer——1~n整数中1出现的次数(JS实现)

题目描述

image.png

解题思路

  • 本题如果采用暴力的方法一定会超时
  • 本题关键在于找规律
  • 规律如下图所示(cur>1,cur=1.cur<1三种情况)

image.png

解题代码(模拟队列)

var countDigitOne = function(n) {
    let flag = 0;
    const TotalBase = Math.pow(10,(String(n).split('').length) - 1);
    for (let i = 0; Math.pow(10,i) <= TotalBase; i++) {
        let base = Math.pow(10,i);
        let cur = Math.floor(n/base) % 10;
        let a = Math.floor(Math.floor(n/base) / 10);
        let b = n % base;
        if (cur < 1) {
            flag = flag + a * base;
        } else if (cur > 1) {
            flag = flag + (a + 1) * base;
        } else {
            flag = flag + a * base + b + 1;
        }
    }
    return flag;
};

精讲UP主

www.bilibili.com/video/av458…

总结(本题给我们的启示思路)

  • 启示一:学会通过数学规律的思想来解决本题
相关文章
|
4月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
24 0
|
9月前
|
JavaScript 前端开发
javascript整数千分位格式化函数
javascript整数千分位格式化函数
52 0
|
9月前
|
JavaScript 前端开发 安全
在 JavaScript 中将浮点数转换为整数
在 JavaScript 中将浮点数转换为整数
133 0
|
JavaScript 前端开发 测试技术
【Javascript - 力扣每日一题】13. 罗马数字转整数
【Javascript - 力扣每日一题】13. 罗马数字转整数
85 0
|
存储 JavaScript 算法
JS算法探险之整数
整数除法 二进制加法 前 n 个数字二进制中 1 的个数 只出现一次的数字
107 0
|
存储 JavaScript 前端开发
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
|
JavaScript 前端开发
利用JavaScript实现二级联动
利用JavaScript实现二级联动 要实现JavaScript二级联动效果,首先要确定需要哪些技术: 二维数组 for in循环 new Option(text,value,true,true) add(option,null) onchange() 表单事件 HTML代码: &lt;!-- &lt;input type=&quot;text&quot; id=&quot;text&quot;&gt; --&gt; 请选择省份: &lt;select name=&quot;&quot; id=&quot;provinces&quot;&gt; &lt;!-- &lt;option value=&quot;江苏省&quot;&gt;江苏省&lt;/option&gt;
|
JavaScript 前端开发
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
167 0