LeetCode(简单)加一(c#)

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

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

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

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

主要需考虑特殊情况,9999类型需单独考虑。其他情况进位,代码如下

public static int[] PlusOne(int[] digits)
        {
            for (int i = digits.Length-1; i >= 0; i--)
            {
                //9999形式且一直进位至最高位
                if (i == 0 && digits[i] == 9)
                {
                    digits[i] = 0;
                    int numAll = digits.Length + 1;
                    int[] newRes = new int[numAll];
                    newRes[0] = 1;
                    for (int j = 1; j <= digits.Length; j++)
                    {
                        newRes[j] = digits[j - 1];
                    }
                    return newRes;
                }
                //非最高位为9
                else if (digits[i]==9)
                {
                    digits[i] = 0;
                }
                //其他形式加1后返回
                else
                {
                    digits[i] += 1;
                    return digits;
                }
            }
            return digits;
        }

你可能感兴趣的:(LeetCode)