初级算法-数组章节-加一

166 阅读1分钟

初级算法(第七题)

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 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. 首先题目的意思是输入的数组相当于一个数组,并且这个数字除了0以为不会有0开的证书比如01
  2. 这样我们就可以遍历数组,从最后以为开始遍历。
  3. 最后开始每一位加1,如果当前位置加1之后小于10,我们就结束循环。返回数组
  4. 如果当前位置加1等于10了,我们就要把当前位置值赋值为0,然后继续循环,但是我们要让循环坐标大于0,坐标等于0的时候有其他判断
  5. 上一步说了坐标为0的时候有其他判断,没错就是再坐标为0的时候,我们要判断+1是否等于10,如果等于10的话就将0坐标赋值为0并且再数组第一位插入一个1,因为是10进位进来的。

话不多说上代码

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
    let length = digits.length;
    for(let i = length-1;i>=0;i--){
        if(digits[i] + 1 < 10){
            digits[i] = digits[i] + 1;
            break;
        };
        if(digits[i] + 1 == 10 && i>0){
            digits[i] = 0
        }
        if(digits[i] + 1 == 10 && i == 0){
            digits[i] = 0;
            digits.unshift(1);
        }
    }
    return digits;
};

每天进步一点,理想终将实现。

祝大家前程似锦