LeetCode系列之 (JavaScript) => 66. 加一
题目描述:

解题思路分析:
模拟十进制;
分析有几种情况,按情况来定
不同解法:
/**
* @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. 加一的更多相关文章
- 【leetcode算法-简单】66. 加一
[题目描述] 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示 ...
- 【Leetcode】【简单】【66. 加一】【JavaScript】
题目描述 66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零 ...
- 前端与算法 leetcode 66. 加一
目录 # 前端与算法 leetcode 66. 加一 题目描述 概要 提示 解析 解法一 解法二 算法 # 前端与算法 leetcode 66. 加一 题目描述 给定一个由整数组成的非空数组所表示的非 ...
- Java实现 LeetCode 66 加一
66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示 ...
- 【LeetCode】66. 加一
66. 加一 知识点:数组: 题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 ...
- 浏览器环境下Javascript脚本加载与执行探析之DOMContentLoaded
在”浏览器环境下Javascript脚本加载与执行探析“系列文章的前几篇,分别针对浏览器环境下JavaScript加载与执行相关的知识点或者属性进行了探究,感兴趣的同学可以先行阅读前几篇文章,了解相关 ...
- C#刷遍Leetcode系列连载 索引
C#刷遍Leetcode系列文章 索引 索引(陆续发布中,请保持关注) C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介 C#刷遍Leetcode面试题系列连载(2): No.38 - ...
- 关于javascript模块加载技术的一些思考
前不久有个网友问我在前端使用requireJs和seajs的问题,我当时问他你们公司以前有没有自己编写的javascript库,或者javascript框架,他的回答是什么都没有,他只是听说像requ ...
- 浏览器中Javascript的加载和执行
在刚学习Javascript时曾对该问题在小组内做个一次StudyReport,发现其中的基础还是值得分析的. 从标题分析,可以加个Javascript的加载和执行分为两个阶段:加载.执行.而加载即浏 ...
- Javascript 异步加载详解(转)
本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属 ...
随机推荐
- 小白之Python-基础中的基础02
Python-基础中的基础02 继续整理笔记,反复练习!fighting! -----------------华丽的分界线-------------变量:第一次出现叫做定义变量,再次出现为为该变量赋值 ...
- sxt_(001_002)_web简介
一.web 网络.网页二.web应用 运行在网络上的应用程序.三.网络应用的分类 3.1 c/s:client/server 如:qq.yy.lol 优点: 个性化更容易实现 更安全 占用网络资源少. ...
- global 函数
x = 15 # 全局变量Gdef func_a(): print(x)def func_b(): print(x)def func_c(): global x # 在定义函数内声明x为全局变量后,才 ...
- 【笔记】archlinux缺少部分常用工具
安装archlinux之后发现缺少很多常用工具 比如ifconfig ftp等 ifconfig需要安装net-tools nslookup需要dnsutils ftp需要inetutils 另外安装 ...
- EMQX 在 Kubernetes 中如何进行优雅升级
背景 为了降低 EMQX 在 Kubernetes 上的部署.运维成本,我们将一些日常运维能力进行总结.抽象并整合到代码中,以 EMQX Kubernetes Operator 的方式帮助用户实现 E ...
- revit卸载工具,完全彻底卸载删除干净revit各种残留注册表和文件的方法和步骤。
revit卸载工具,完全彻底卸载删除干净revit各种残留注册表和文件的方法和步骤.如何卸载revit呢?有很多同学想把revit卸载后重新安装,但是发现revit安装到一半就失败了或者显示revit ...
- uniapp 扫描
借鉴链接:https://blog.csdn.net/qq_33165549/article/details/89879435 1.扫描页面 <template> <view> ...
- 解决vscode中,powershell中conda activate无效--更改vscode默认的shell为anaconda shell
问题记录: windows系统里,cmd可以正常使用conda activate 命令,但是在powershell中,使用conda activate既不报错(说明路径没问题),也没激活conda环境 ...
- MySQL 5.7升级8.0过程(详解)
记一次MySQL 5.7升级8.0的详细过程,聊聊我的思路,希望可以帮助大家. 以一个例子为切入点 一.升级背景 为什么要升级到MySQL8.0?大概多久进行一次? 大家可以参考下图记录的各个版本的发 ...
- chrome网页截图
1. 打开网页 2. F12,打开开发者工具 3. Ctrl+Shift+P,打开应用查找框 4. 输入screenshot,查找相关工具 5. 试用工具 1)Capture area screens ...