leetcode题目,个人见解1

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

个人见解:
该题目任意输入一个正整数,如果个位数上的数字不为9,直接把个位数的数字加1,返回即可。
如果个位数为9,可以列举一个较为特殊的数字 99 。99+1=100。
当我们任意输入一个数时,最后一个数字(个位数)为9时,把它置为0,那相应的十位数也要判断是否为9,如果不为9,加1就可以了。
如果为9,也是要置为0。那此时99变成了00。
肯定是不对的,我们就判断最高位是不是为0,如果为0,就新创建一个比原来数组长度大1的新数组,并把最高位置为1。

解题代码:

public int[] plusOne(int[] digits) {

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

 



原文地址:https://www.cnblogs.com/takeyblogs/p/12661784.html