赞
踩
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/plus-one
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目比较简单,没什么好讲讲解的。
只是稍微注意下
[9,9,9] ---->[1,0,0,0] 需要扩展位数
[1,9,9]----->[2,0,0] 不需要扩展位数的进位这两种情况
class Solution { public int[] plusOne(int[] digits) { //不需要进位的情况,尾数+1返回 if (digits[digits.length-1]<9){ digits[digits.length-1] += 1; return digits; } //需要进位的情况 int tempLength = digits.length; //声明个数组来存储数据, int[] temp = new int[tempLength+1]; //初始化temp System.arraycopy(digits, 0, temp, 1, tempLength ); for (int i = tempLength;i>=0; i--){ temp[i]+=1; //不需要进位直接退出循环, if (temp[i] < 10){ break; } //进位 temp[i] = 0; } //如果temp首位为零,则不是999这种情况的数据,位数没有扩大 if (temp[0] == 0){ System.arraycopy(temp,1,digits,0,tempLength); return digits; } //首位不为0,说明进位了,返回temp return temp; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。