LC 加一

Posted yangbocsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC 加一相关的知识,希望对你有一定的参考价值。

LC 加一


给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。


【代码1.0】

class Solution {
    public int[] plusOne(int[] digits) {
        int len = digits.length;
        int[] arr = new int[len + 1];  //返回数组的最长为 len + 1,即最高位进位时
        int carryFlag = 1;             //进位标志位
        for (int i = len - 1; i >= 0; i--)  //从个位开始加
        {
            if (digits[i]+carryFlag == 10) //会产生进位的
            {
                arr[i+1] = 0;
                carryFlag = 1;
            }
            else
            {
                arr[i+1] = digits[i]+carryFlag;
                carryFlag = 0;
            }
        }
        
        //返回数组处理
        if (carryFlag == 1) //最高位有进位
        {
            arr[0] = 1;
            return arr;
        }
        else                //最高位没有进位,所以要去掉arr[]0
            return Arrays.copyOfRange(arr,1,len+1);
    
    }
}


【代码2.0】

class Solution {
    public int[] plusOne(int[] digits) {
        int length = digits.length;
        for (int i = length - 1; i >= 0; i--)
        {
            if (digits[i] != 9)
            {
                //如果数组当前元素不等于9,直接加1,返回
                digits[i]++;
                return digits;
            }
            else
            {
                //如果数组当前元素等于9,那么加1之后,肯定会变为0,我们先让他变为0
                digits[i] = 0;
            }
        }
        
        //除非数组中的元素都是9,否则不会走到这一步,
        //如果数组的元素都是9,我们只需要把数组的长度
        //增加1,并且把数组的第一个元素置为1即可
        int temp[] = new int[length + 1];
        temp[0] = 1;
        return temp;
    }
}

以上是关于LC 加一的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发-OC学习-常用功能代码片段整理

算法刷题:LC初级算法

算法刷题:LC初级算法

动态规划基础练习(lc509,lc70,lc746,lc62,lc63,lc343,lc96)

011111100 在此 LC-3 代码中指的是啥?

Lc.exe已退出 代码为-1