题目描述:

解题思路分析:

模拟十进制;

分析有几种情况,按情况来定

不同解法:

/**
* @param {number[]} digits
* @return {number[]}
*/
// var plusOne = function(digits) {
var n = digits.length;
var count = n-1;
while(count >= 0){
digits[count] += 1;
if(digits[count] >= 10){
digits[count] = 0;
if(count == 0){
digits.unshift(1);
}
}else if(digits[count] <= 9){
break;
}
count--;
}
return digits;
}; // // (改变结束循环的条件,运行速度一样)相当于没有改进
// /**
// * @param {number[]} digits
// * @return {number[]}
// */
var plusOne = function(digits){
var n = digits.length;
var count = n-1;
++digits[count];
while(digits[count] > 9){
digits[count] = 0;
if(count == 0){
digits.unshift(1);
}else{
++digits[--count];
}
}
return digits;
} // 继续改进 (“避重就轻”)// 最终结果是速度没有提高
// 改进思路:
// 可以分为两种情况:
//1.不改变原数组长度:
//进1 的位置一定在数组里,且相应的位置数字一定小于9,并停止循环; 之后的位置的都为0;
//循环方向从后往前;
//2.改变原数组长度 => 所有位置都等于10,长度增加1位,其他位置都为0
var plusOne = function(digits) {
for(var i = digits.length-1; i>=0; i--){
// 不改变原数组的长度
if(digits[i] < 9){
digits[i] +=1;
break;
}
digits[i]=0;
}
//改变原数组的长度(co)
if(digits[0] === 0){
digits.unshift(1);
// var arr = new Array(digits.length + 1);
// arr.fill(0,1);
// arr[0] = 1;
// digits = arr; }
return digits;
};

参考链接:

LeetCode系列之 (JavaScript) => 66. 加一的更多相关文章

  1. 【leetcode算法-简单】66. 加一

    [题目描述] 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示 ...

  2. 【Leetcode】【简单】【66. 加一】【JavaScript】

    题目描述 66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零 ...

  3. 前端与算法 leetcode 66. 加一

    目录 # 前端与算法 leetcode 66. 加一 题目描述 概要 提示 解析 解法一 解法二 算法 # 前端与算法 leetcode 66. 加一 题目描述 给定一个由整数组成的非空数组所表示的非 ...

  4. Java实现 LeetCode 66 加一

    66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示 ...

  5. 【LeetCode】66. 加一

    66. 加一 知识点:数组: 题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 ...

  6. 浏览器环境下Javascript脚本加载与执行探析之DOMContentLoaded

    在”浏览器环境下Javascript脚本加载与执行探析“系列文章的前几篇,分别针对浏览器环境下JavaScript加载与执行相关的知识点或者属性进行了探究,感兴趣的同学可以先行阅读前几篇文章,了解相关 ...

  7. C#刷遍Leetcode系列连载 索引

    C#刷遍Leetcode系列文章 索引 索引(陆续发布中,请保持关注) C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介 C#刷遍Leetcode面试题系列连载(2): No.38 - ...

  8. 关于javascript模块加载技术的一些思考

    前不久有个网友问我在前端使用requireJs和seajs的问题,我当时问他你们公司以前有没有自己编写的javascript库,或者javascript框架,他的回答是什么都没有,他只是听说像requ ...

  9. 浏览器中Javascript的加载和执行

    在刚学习Javascript时曾对该问题在小组内做个一次StudyReport,发现其中的基础还是值得分析的. 从标题分析,可以加个Javascript的加载和执行分为两个阶段:加载.执行.而加载即浏 ...

  10. Javascript 异步加载详解(转)

    本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属 ...

随机推荐

  1. 【jquery easyUI 拓展

    jquery-easyui本身没有提供列锁定/解锁的接口,并且其原有的列隐藏/显示在符合表头的情况下会出现错位,我在项目中遇到了这两个问题,在参考了网上许多解决方案后,编写了一个拓展插件,基本上解决了 ...

  2. npm ERR! Failed at the node-sass@4.14.1 postinstall script.

    我们后台要了前端源代码,启动Vue项目后出现了这几行出错信息 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass@4.14.1 p ...

  3. redis注册成windows服务步骤

    1.cmd命令切换到redis的安装目录 2.执行如下命令,将redis注册成为windows的服务 redis-server --service-install redis.windows.conf ...

  4. 开启wamp依旧使用已下载的mysql

    1.打开D:\Environment\wamp64\bin\mysql\mysql8.0.31,修改my.ini 添加本机mysql密码,并且将3个port=3306改为port=3316 2.打开D ...

  5. 调度器46—tick模式

    一.tick简介 tick就是一个周期性的中断,周期通过 CONFIG_HZ 进行配置,一般常取值为100Hz.250Hz.1000Hz.Tick 每秒窃取CPU 100 到 1000 次,导致Ica ...

  6. PIL修改图像

    PIL修改图像 像素:最小物理单元 pixel 分辨率:1024*980 可以表征 图像分辨率 或者350dpi 每英寸 350个dot表征分辨率 调整图像分辨率 from PIL import Im ...

  7. MySQL 的limit

    题目 limit:从倒数第二行开始,往前查找一行

  8. Redis缓存雪崩,击穿和穿透

    这三个问题的发生,会导致大量的请求直接积压到数据库,如果并发量很大,则可能会导致数据库宕机或故障. 缓存雪崩   描述:大量的请求无法在redis缓存中进行处理而被发送到数据库,导致数据库压力陡增. ...

  9. Uri转绝对路径工具类

    /** * 反射从 provider uri中获取 文件绝对路径 * @param context * @param uri * @return */ private static String ge ...

  10. wpf treeview 新增右键菜单

    <TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}"> <E ...