Plus One

来源:互联网 发布:淘宝卖家怎么看交易额 编辑:程序博客网 时间:2024/06/07 20:15

1.题目

给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。

该数字按照大小进行排列,最大的数在列表的最前面。

给定 [1,2,3] 表示 123, 返回 [1,2,4].

给定 [9,9,9] 表示 999, 返回 [1,0,0,0].

2.算法

思路是维护一个进位,从后往前扫描,如果有进位扫描下一位,如果没有直接返回,如果到了最高位任然进位,则我们要重新创建一个比原数组多一位的数组,并把第一位设为1

public int[] plusOne(int[] digits) {      if(digits == null || digits.length==0)     {        return digits;      }    int carry = 1;  //进位    for (int i = digits.length - 1; i >=0; i--)    {    int digit = (digits[i] + carry) % 10;    carry = (digits[i] + carry) / 10;    digits[i] = digit;    if (carry == 0) //如果没进位直接返回    {    return digits;    }    }    int[] res = new int[digits.length + 1]; //到最高位重新创建数组如999 + 1 = 1000    res[0] = 1;    return res;}


0 0
原创粉丝点击