Leetcode - Plus One

Leetcode - Plus One_第1张图片
Paste_Image.png

My code:

public class Solution {
    public int[] plusOne(int[] digits) {
        if (digits == null || digits.length == 0)
            return null;
        int[] plusOne = new int[digits.length + 1];
        int carry = 1;
        for (int i = digits.length; i >=0; i--) {
            if (i > 0) {
                int temp = digits[i - 1];
                temp = temp + carry;
                if (temp >= 10) {
                    temp = temp - 10;
                    carry = 1;
                    plusOne[i] = temp;
                }
                else {
                    plusOne[i] = temp;
                    carry = 0;
                }
            }
            else {
                if (carry == 1)
                    plusOne[i] = 1;
                else {
                    int[] copy = new int[digits.length];
                    for (int j = 0; j < digits.length; j++)
                        copy[j] = plusOne[j + 1];
                    plusOne = copy;
                }
            }
        }
        return plusOne;
    }
    
    public static void main(String[] args) {
        Solution test = new Solution();
        int[] digits = {0};
        System.out.println(test.plusOne(digits));
    }
}

My test result:

Leetcode - Plus One_第2张图片
Paste_Image.png

这次题目不是很难。就类似于自己写一个加法器。把每个数逐渐加上去,并且通过 carry进位来实现加法器。

**
总结:加法器。
感觉妹子的担子很大,我现在可能还能陪她聊聊,等我出去了,基本都得她一个人来面对了。不知道该说什么,因为说什么,我也帮不了什么,做不了什么。
一句话吧,希望你好运,一切平安。
**
Anyway, Good luck, Richardo!

My code:

public class Solution {
    public int[] plusOne(int[] digits) {
        if (digits == null || digits.length == 0)
            return null;
        int s = 1;
        for (int i = digits.length - 1; i >= 0; i--) {
            if (digits[i] + s <= 9) {
                digits[i] += s;
                s = 0;
            }
            else {
                int sum = (digits[i] + s);
                digits[i] = sum % 10;
                s = sum / 10;
            }
        }
        /** copy original digits and extend it */
        if (s >= 1) {
            int[] ret = new int[digits.length + 1];
            for (int i = ret.length - 1; i >= 1; i--)
                ret[i] = digits[i - 1];
            ret[0] = s;
            return ret;
        }
        else
            return digits;
    }
}

很简单的一道题目,错了好几次,一开始理解错题意了,以为是二进制的。

Anyway, Good luck, Richardo!

你可能感兴趣的:(Leetcode - Plus One)