LC 加一
Posted yangbocsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC 加一相关的知识,希望对你有一定的参考价值。
LC 加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
【代码1.0】
class Solution {
public int[] plusOne(int[] digits) {
int len = digits.length;
int[] arr = new int[len + 1]; //返回数组的最长为 len + 1,即最高位进位时
int carryFlag = 1; //进位标志位
for (int i = len - 1; i >= 0; i--) //从个位开始加
{
if (digits[i]+carryFlag == 10) //会产生进位的
{
arr[i+1] = 0;
carryFlag = 1;
}
else
{
arr[i+1] = digits[i]+carryFlag;
carryFlag = 0;
}
}
//返回数组处理
if (carryFlag == 1) //最高位有进位
{
arr[0] = 1;
return arr;
}
else //最高位没有进位,所以要去掉arr[]0
return Arrays.copyOfRange(arr,1,len+1);
}
}
【代码2.0】
class Solution {
public int[] plusOne(int[] digits) {
int length = digits.length;
for (int i = length - 1; i >= 0; i--)
{
if (digits[i] != 9)
{
//如果数组当前元素不等于9,直接加1,返回
digits[i]++;
return digits;
}
else
{
//如果数组当前元素等于9,那么加1之后,肯定会变为0,我们先让他变为0
digits[i] = 0;
}
}
//除非数组中的元素都是9,否则不会走到这一步,
//如果数组的元素都是9,我们只需要把数组的长度
//增加1,并且把数组的第一个元素置为1即可
int temp[] = new int[length + 1];
temp[0] = 1;
return temp;
}
}
以上是关于LC 加一的主要内容,如果未能解决你的问题,请参考以下文章