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.
用一个数组表示一个非负整数的每一位,写一个函数返回这个整数+1的结果。
比如

input [9,9,9,9] 
return[1,0,0,0,0]

题目比较简单,看到就很容易直接写出来,比如我写的是这样:

public int[] plusOne(int[] digits) {
        int mod = 0,carry = 1, sign = digits[0];
        for (int i = digits.length-1; i >= 0; i--) {
            int temp = digits[i]+carry;
            mod = temp%10;
            carry = temp/10;
            digits[i] = mod;
        }
        if (carry == 0) {
            return digits;
        }else {
            int temp[] = new int[digits.length+1]; 
            temp[0] = carry;
            for (int i = 1; i < temp.length; i++) {
                temp[i] = digits[i-1];
            }
            return temp;
        }
    }

这么写结果倒是没什么问题,也通过了所有的测试,不过看到别人的代码才知道自己的代码实在是拖泥带水。下面是别人家孩子的代码。思路清晰,而且少了一次循环。

public int[] plusOne(int[] digits) {
  int length = digits.length - 1;
  for (int i = length - 1; i >= 0; --i)
     {
         if (digits[i] == 9)
         {
             digits[i] = 0;
         }
         else
         {
             digits[i]++;
             return digits;
         }
     }
        int[] res = new int[digits.length + 1];
        res[0] = 1;
        return res;
    }

写出干净的代码是在需要多加练习,清晰的思路是关键,继续加油。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容