7【简单】加一

该文提供了一种解决方案,用于对由整数数组表示的非负整数进行加一操作。算法从数组末尾开始,遇到9则进位至0,直到找到非9的数字或数组开头。若所有数字均变成0,则在数组前添加1。时间复杂度为O(n),空间复杂度为O(1)。
摘要由CSDN通过智能技术生成

一、题目描述

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

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

你可以假设除了整数 0 之外,这个整数不会以零开头。


二、解题思路过程

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
    var n=digits.length-1;
    // 判断第n数为9,如果是,需要向前进1
    while(digits[n]==9){
        // 进1之后,原来的9变为0
        digits[n]=0;
        // 向前查找,检查9之前的数字是否是9
        n=n-1;
    };
    // 如果都变成了0 ,就在数组最前方插入一个1
    // 否则,将第n个数加1
    if(digits[0]==0){
        digits.unshift(1);
    }else{
        digits[n]=digits[n]+1;
    };
    return digits;
};

三、复杂度分析

时间复杂度:O(n),n为数组digits的最大长度。

空间复杂度:O(1),使用的额外空间复杂度为常数。


四、题目来源

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/plus-one

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>