go语言题解LeetCode66加一示例详解
作者:刘09k11 发布时间:2024-05-13 10:43:47
标签:go,LeetCode,加一
题目描述
原题链接 :
66. 加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0]
输出:[1]
提示:
1 <= digits.length <= 100
0 <= digits[i] <= 9
思路分析
对于一般的数字,直接在末位加一即可,
本题特殊的两个点:
若加一之后的值为10,需要进一位
若数字为类似999 ,加一之后需要多一位数。使用insert()来实现, insert函数 : vec.insert(begin()+i ,a) 在第i个元素插入a
AC 代码
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int size = digits.size();
if(digits[size-1] != 9) //若末位不等于9,正常加一
{
++digits[size-1];
}
else //若末位等于9,加一等于0
{
digits[size-1] = 0;
for(int i = size - 1; i >0; --i) //若加完一后若等于0,下一位要进一 如869
{
if(digits[i] == 0)
{
digits[i-1] = (digits[i-1] + 1) % 10;
}
else
break; //若某一位是数不需要进一,跳出循环
}
if(digits[0] == 0) //若到最后最高位也等于0,需要多一位数 如99 + 1 此时为答案为00,进行一下操作
{
digits.insert(digits.begin(),1); //在最高位插入1
}
}
return digits;
}
};
小结
题目不长,但是还是有点拗口的感觉,首先要先弄明白题意,然后正常的思路下考虑进位的溢出等就可以解出来。
JavaScript 66题
代码
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
//先遍历 从右向左
for(let i = digits.length-1;i>=0;i--){
if(digits[i] !==9){
digits[i]++
return digits;
}else{
// 是 9
digits[i] = 0
}
}
let result = [1,...digits];
/* let result = [1].concat(digits);
digits.unshift(1);
*/
return result;
};
python3 循环判断
分析:
这是一道基础的属组倒序查找的问题,唯一需要关注的就是类似[9,9]的场景,循环后需要看是否需要进位。
如果需要进位,则在数组0位置插入1,才能保证接过的正确性。
class Solution:
def plusOne(self, digits):
count = 1
for i in range(len(digits) - 1, -1, -1):
count, digits[i] = divmod(digits[i] + count, 10)
if count == 0:
break
if count:
digits.insert(0,count)
return digits
JAVA解决进位问题
解题思路
倒着看,不为9,直接加1,返回:为9的话,需要进位,变成0即可;
特殊情况 9 99 等,一直为9的,结果肯定是10 ,100 数组长度加1 ,首位为1
代码
class Solution {
public int[] plusOne(int[] digits) {
int length = digits.length;
// 最后一个不为九的数加1,为九的变0,9 99 单独处理
for (int i = length - 1; i >= 0; i--) {
if(digits[i] != 9){
digits[i] = digits[i] + 1;
return digits;
}else {
digits[i] = 0;
}
}
int[] ints = new int[length + 1];
ints[0] = 1;
return ints;
}
}
来源:https://juejin.cn/post/7173675582759108645
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 在大多数情况下,攻击者可以通过定位域管理员所登录的服务器,利用漏洞获取服务器system权限,找到域管理的账号、进程或是身份验证令牌,从而获
- 本文为大家分享了MySQL预编译功能,供大家参考,具体内容如下1、预编译的好处大家平时都使用过JDBC中的PreparedStatement
- 前言本文主要给大家介绍了关于laravel5异常错误FatalErrorException in Handler.php line 38的解
- 如果让一个ASP页面以https开始,则在该ASP页面最顶部添加如下代码: <%Response.Buffer =
- 什么情况下用响应缓冲会提高运行速度?例1、脚本引擎与 HTML 之间的切换频繁,对响应流写操作太多,导致性能下降:<table>
- <?php /******************************************** *&nb
- 公司运营着的网站,流量很大,网站是交互式的,经常在过了三四个月的时候索引生成的碎片就很多,由于很大一部分页面没有生成静态,这就导致网站在打开
- 1. 模块(Module)在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代
- 析构函数当某个对象成为垃圾或者当对象被显式销毁时执行。PHP5中提供的析构函数是__destruct,其与构造方法__construct相对
- 1、去官网下载1.1、网址:https://www.jetbrains.com/pycharm/ 点这里进入选择版本页面1.2、如果就是我们
- 对于opencv 它提供了许多已经练习好的模型可供使用,我们需要通过他们来进行人脸识别参考了网上许多资料 假设你已经配好了开发环境
- 大多数使用 WordPress 搭建的网站,其后台都是 MySQL 数据库,经常我们需要定制 WordPress 的功能,这里我们列表 10
- 但是我们可以换一种方法解决这个问题。下面就来分析下解决办法。对text或ntext类型的数据在查询中不能进行字符串操作。这时用得最多的是把t
- ASP中从数据库读取二进制文件数据代码:<%driver_name1="DRIVER={Microsoft&n
- 本文实例为大家分享了Python实现双人五子棋对局的具体代码,供大家参考,具体内容如下效果:自己需要两个棋子:服务器玩家全部代码:# 案列使
- 如下所示:./src/github.com/sirupsen/logrus/terminal_check_notappengine.go:9
- 大致功能:$() 取得所有元素$("div") 取得所有DIV$("#a1") 取得ID为a1的元素
- //问题比如:7*0.8 JavaScript算出来就是:5.6000000000000005  
- 基于python的Appium进行b站直播消费记录爬取之前看文章说fiddler也可以进行爬取,但尝试了一下没成功,这次选择appium进行
- 一、简介项目中用到了MySQL,参考网上的例子做了安装和基本使用,本文简单的介绍一下。二、环境准备操作系统:Win10三、教程1、下载安装包