Leetcode - Plus One

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:

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!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容