加载中...
66-加一(Plus One)
发表于:2021-12-03 | 分类: 简单
字数统计: 375 | 阅读时长: 1分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/plus-one

英文原文

You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0's.

Increment the large integer by one and return the resulting array of digits.

 

Example 1:

Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Incrementing by one gives 123 + 1 = 124.
Thus, the result should be [1,2,4].

Example 2:

Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Incrementing by one gives 4321 + 1 = 4322.
Thus, the result should be [4,3,2,2].

Example 3:

Input: digits = [0]
Output: [1]
Explanation: The array represents the integer 0.
Incrementing by one gives 0 + 1 = 1.
Thus, the result should be [1].

Example 4:

Input: digits = [9]
Output: [1,0]
Explanation: The array represents the integer 9.
Incrementing by one gives 9 + 1 = 10.
Thus, the result should be [1,0].

 

Constraints:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9
  • digits does not contain any leading 0's.

中文题目

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 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

通过代码

高赞题解

根据题意加一,没错就是加一这很重要,因为它是只加一的所以有可能的情况就只有两种:

  1. 除 $9$ 之外的数字加一;
  2. 数字 $9$。

加一得十进一位个位数为 $0$ 加法运算如不出现进位就运算结束了且进位只会是一。

所以只需要判断有没有进位并模拟出它的进位方式,如十位数加 $1$ 个位数置为 $0$,如此循环直到判断没有再进位就退出循环返回结果。

然后还有一些特殊情况就是当出现 $99$、$999$ 之类的数字时,循环到最后也需要进位,出现这种情况时需要手动将它进一位。

[]
class Solution { public int[] plusOne(int[] digits) { for (int i = digits.length - 1; i >= 0; i--) { digits[i]++; digits[i] = digits[i] % 10; if (digits[i] != 0) return digits; } digits = new int[digits.length + 1]; digits[0] = 1; return digits; } }

PS:本人并非大佬,这是第一次写思路解释,如有写的不好的地方请多多包涵,哈哈哈

统计信息

通过次数 提交次数 AC比率
407271 878938 46.3%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言

相似题目

题目 难度
字符串相乘 中等
二进制求和 简单
给单链表加一 中等
数组形式的整数加法 简单
上一篇:
65-有效数字(Valid Number)
下一篇:
67-二进制求和(Add Binary)
本文目录
本文目录