Leetcode65 Plus One

Posted xuweimdm

tags:

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

Plus One

Given a non-negative number represented as an array of digits, plus one to the number.

The digits are stored such that the most significant digit is at the head of the list.

Solution1

public class Solution 
    public int[] plusOne(int[] digits) 
        int[] result = new int[digits.length];
        int ci = 1;
        for(int i=digits.length-1;i>=0;i--)
            result[i] = digits[i]+ci;
            ci = result[i]/10;
            result[i] %= 10;
        
        if(ci==1)
            result = new int[digits.length+1];
            result[0] = 1;
        
        return result;        
    

Solution2

  • 如果原始输入数组可以改变的话, 可以直接利用原始数组
public class Solution 
    public int[] plusOne(int[] digits) 
        int ci = 1;
        for(int i=digits.length-1;i>=0;i--)
            digits[i] += ci;
            ci = digits[i]/10;
            digits[i] %= 10;
        
        if(ci==1)
            digits = new int[digits.length+1];
            digits[0] = 1;
        
        return digits;    
    

Solution3

  • 利用原始输入数组的话,可以提前退出。
public class Solution 
    public int[] plusOne(int[] digits) 
        int ci = 1;
        for(int i=digits.length-1;i>=0&&ci>0;i--)//当ci=0时便可以提前退出了
            digits[i] += ci;
            ci = digits[i]/10;
            digits[i] %= 10;
        
        if(ci==1)
            digits = new int[digits.length+1];
            digits[0] = 1;
        
        return digits;
    

Solution4

  • 下面是一个绝妙的方法,诸君请看:
public class Solution 
    public int[] plusOne(int[] digits) 
        for(int i=digits.length-1;i>=0;i--)
            if(digits[i]==9) digits[i] = 0;
            else
                digits[i]++;
                return digits;//表明不需要再加了,直接返回即可
            
        
        digits = new int[digits.length+1];
        digits[0] = 1;//如果能正常退出for循环,表明原数组全是9
        return digits;
    
  • 当然还可以用递归的方法,但是比上面的都要复杂了, 没必要。

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

[Leetcode] Plus One

LeetCode Plus One Linked List

Plus One Leetcode

[LeetCode] Plus One

leetcode 66. Plus One

[LeetCode] 66. Plus One