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.
Задано неотрицательное
число, представленное в виде массива цифр. Прибавьте к нему единицу.
Цифры в массиве расположены
так, что наиболее значимая цифра находится в голове массива.
// C++
class Solution {
public:
vector<int> plusOne(vector<int>&
digits) {
}
};
// Java
public class Solution {
public int[] plusOne(int[] digits) {
}
}
последовательности
Следует промоделировать прибавление единицы к цифрам числа.
Реализация алгоритма
class Solution
{
public:
vector<int> plusOne(vector<int>&
digits)
{
int n = digits.size();
reverse(digits.begin(), digits.end());
int add = 1;
for (int i = 0; i
< n; i++)
{
int v = digits[i] + add;
digits[i] = v %
10;
add = v / 10;
}
if (add == 1) digits.push_back(1);
reverse(digits.begin(), digits.end());
return digits;
}
};
Java реализация
public class
Solution
{
public int[] plusOne(int[] digits)
{
int i = digits.length-1;
while(i >= 0)
{
if(digits[i] < 9)
{
digits[i] =
digits[i] + 1;
return digits;
}
else
{
digits[i] = 0;
i--;
}
}
int Newdigits[] = new
int[digits.length+1]; //
all elements are 0
Newdigits[0] = 1;
return Newdigits;
}
}
Java реализация – второе решение
import java.util.*;
class Solution
{
public int[] plusOne(int[] digits)
{
int i = digits.length-1;
while(i >= 0 && digits[i] == 9)
{
digits[i] = 0;
i--;
}
if (i >= 0)
{
digits[i] += 1;
return digits;
}
int Newdigits[] = new
int[digits.length+1]; //
all elements are 0
Newdigits[0] = 1;
return Newdigits;
}
}
public class
Main
{
public static void main(String []args)
{
Solution s = new Solution();
int nums[] = {9,9,9,9};
int res[] = s.plusOne(nums);
for(int i = 0; i <
res.length; i++)
System.out.print(res[i]);
System.out.println();
}
}