leetcode-66-加一

1.问题描述

https://leetcode-cn.com/problems/plus-one/

2.解题代码

2.1 朴素解法

/*
 * @lc app=leetcode.cn id=66 lang=csharp
 *
 * [66] 加一
 */

// @lc code=start
public class Solution {
    public int[] PlusOne(int[] digits) {
        int[] intArr=new int[digits.Length];

        bool full=true;
        for (int i = digits.Length-1; i >=0; i--)
        {
            int result=digits[i];
            if(full)
            {
                 result+=1;
            }
            if(result>9)
            {
                intArr[i]=result-10;
                full=true;
            }
            else
            {
                intArr[i]=result;
                full=false;
            }
        }

        int[] returnArr=null;
        int index=0;
        if(full)
        {
            returnArr=new int[digits.Length+1];
            returnArr[0]=1;
            index=1;
        }
        else
        {
            returnArr=new int[digits.Length];
        }

        for (int i = 0; i < intArr.Length; i++)
        {
            returnArr[i+index]=intArr[i];
        }

        return returnArr;
    }
}
// @lc code=end


2.2 官方解法

public class Solution {
    public int[] PlusOne(int[] digits) {
        int n = digits.Length;
        for (int i = n - 1; i >= 0; --i) {
            if (digits[i] != 9) {
                ++digits[i];
                for (int j = i + 1; j < n; ++j) {
                    digits[j] = 0;
                }
                return digits;
            }
        }

        // digits 中所有的元素均为 9
        int[] ans = new int[n + 1];
        ans[0] = 1;
        return ans;
    }
}
上一篇:7-11 Saving James Bond - Hard Version (30分)


下一篇:Vue组件封装之数字滚动组件