66. Plus One 加一运算

Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.

You may assume the integer do not contain any leading zero, except the number 0 itself.

The digits are stored such that the most significant digit is at the head of the list.

题目解析:

一个数值的每一位都分别放到一个一维向量中,最高位放在数组的开头位置,目的是给这个数值整体上加一。

以下代码参考leetcode上一位刷题的前辈的代码,比较简单易懂

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

解题思路:

给整个数值加一也就是输在数字的末位加一,即给数组的最后一个加一即可

需要考虑到的是如果末尾数值是9,那么需要进位,即末尾置零,然后倒数第二位加一

如果每一位都是9,则需要重新再数值的首位前面加一位1.

故从末尾开始首先判断个位是否为9,若不是,则直接加一return数组即可;若是,则该位置零,继续循环看十位;若循环到首位一直是9,则首位类似于之前同样置零,new一个n+1位的数组,令首位的数值为1即可,因为java中新建一个数组相当于全部数值的初始化数值为0.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值