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 属 ...
随机推荐
- Pytorch加载txt格式的数据集文件(以PTB数据集为例)
前言 这篇博客以PTB数据集为例,详细讲解了如何将txt格式的数据集文件,转换为pytorch框架可以直接处理的tensor变量,并附上相应代码 @ 目录 前言 1. PTB 数据集 2. 构建词汇表 ...
- vue面试题及答案(1)
vue面试题,知识点汇总(有答案) 一. Vue 核心小知识点 1.vue 中 key 值的作用 key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VN ...
- Docker CLI docker run 常用命令
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化.Docker是内核 ...
- Day24:结论的撰写&&openid再次尝试
今日完成的任务: 1.完成部分总报告结论的撰写. 2.再次尝试获取openid 根据官方文档,wx.login()的回调函数中,需要我们传递生成的用户登录凭证到code2accessToken的接口中 ...
- 【java】MVC模式和三层架构
MVC是一种分层开发的模式 M:Model,业务模型,处理业务,存储数据,获取数据.JavaBean对象 V: View , 视图,界面展示,展示数据.JSP或HTML C: Controller, ...
- 给自己提个醒,渲染模版引擎handlebars已经足够好用了,不要再到处乱看浪费时间了。
<html><body onload="renderHello()"><div id="target">Loading... ...
- OSPF配置知识总结3(多区域配置)
OSPF配置知识总结3(多区域配置) 1.相关解释: 要解决网络规模大了以后的问题:网络的扩展性,降低路由器负载,实现路由的更快收敛 OSPF多区域的区域类型分为Area 0(骨干区域), 以及非Ar ...
- wpf 自定义Messagebox时,对话框显示不居中问题
在自定义Messagebox(有属性Window.SizeToContent="WidthAndHeight")时,对话框显示不居中,经过尝试,应设置如下: msgBox.Wind ...
- gitee 上传远程仓库失败
1:添加本地id_rsa.pub文件内容到gitee SSH Keys (添加公开密钥) 2:设置本地的邮箱和用户名 git config --global user.name "MARS& ...
- php echo print
echo print都是语言结构,都不是函数,但echo没有返回值,print有. echo print