给定一个用数组表示的数字,即数组中每个数表示一个数位上的数,例如 [1,2,3],表示 123 ,请问给这个数字加一后得到的结果(结果同样以数组的形式返回)。
注意:数组中不可能出现负数,且保证数组的首位即数字的首位不可能是 0 。
数据范围: 数组长度满足
,数组中每个数满足 
[1,2,3]
[1,2,4]
[1,9]
[2,0]
[9]
[1,0]
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型一维数组
*/
public int[] plusOne (int[] nums) {
// write code here
LinkedList<Integer> list = new LinkedList<>();
int carry = 0;
for(int i = nums.length - 1; i >= 0; i--){
int sum = carry + (i == nums.length - 1? 1: 0) + nums[i];
list.add(sum % 10);
carry = sum / 10;
}
if(carry > 0) list.add(carry);
int[] res = new int[list.size()];
int p = 0;
while(!list.isEmpty()){
res[p++] = list.removeLast();
}
return res;
}
} public static int[] plusOne (int[] nums) {
// write code here
StringBuilder sb = new StringBuilder();
int high = 1;// 1 表示初始化 + 1
for (int i = nums.length - 1; i >= 0; i--) {
int plus = nums[i] + high;
high = plus / 10;
sb.insert(0, plus > 9 ? plus % 10 : plus);
}
if(high > 0 ) sb.insert(0, high);
int[] res = new int[sb.length()];
for (int i = 0; i < sb.length(); i++)
res[i] = sb.charAt(i) - '0';
return res;
} public static int[] plusOne (int[] nums) {
StringBuilder in = new StringBuilder();
for (int num : nums)
in.append(num);
String sb = new BigInteger(in.toString()).add(new BigInteger("1")).toString();
int[] res = new int[sb.length()];
for (int i = 0; i < sb.length(); i++)
res[i] = sb.charAt(i) - '0';
return res;
} package main
import _"fmt"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型一维数组
*/
func plusOne( nums []int ) []int {
carry:=1
for i:=len(nums)-1;i>=0;i--{
carry+=nums[i]
if carry!=10{
nums[i]=carry
carry=0
break
}else{
nums[i]=0
carry=1
}
}
if carry==1{
nums=append([]int{1},nums...)
}
return nums
} class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型vector
*/
vector<int> plusOne(vector<int>& nums) {
// write code here
int c = 1;
for(int i=nums.size()-1; i>=0; i--)
{
int val = c + nums[i];
nums[i] = val % 10;
c = val / 10;
}
if(c==0)
return nums;
vector<int> res;
res.push_back(c);
for(int i=0; i<nums.size(); i++)
res.push_back(nums[i]);
return res;
}
}; vector<int> plusOne(vector<int>& nums) {
// write code here
int res=1;
for(int i=nums.size()-1;i>=0;i--)
{
nums[i]+=res;
res=nums[i]/10;
nums[i]%=10;
}
if(res==1)
{
nums.insert(nums.begin(), 1);
}
return nums;
} public int[] plusOne (int[] nums) {
int i=nums.length-1;
while(i>=0){
if(nums[i]==9){
nums[i]=0;
i--;
}else{
nums[i]++;
break;
}
}
int[] n=new int[nums.length+1];
if(nums[0]==0){
n[0]=1;
for(int j=1;j<nums.length+1;j++){
n[j]=nums[j-1];
}
return n;
}
return nums;
} import java.util.*;
public class Solution {
public int[] plusOne (int[] nums) {
ArrayList<Integer> list = new ArrayList<>();
int carry = 0, idx = nums.length-1, sum = 0;
while (idx >= 0) {
sum = 0;
if (idx == nums.length-1) sum += 1;
sum += nums[idx--] + carry;
carry = sum / 10;
list.add(sum % 10);
}
if (carry > 0) list.add(carry);
int[] res = new int[list.size()];
for (int i = list.size()-1; i >= 0; i--) {
res[list.size()-i-1] = list.get(i);
}
return res;
}
} public int[] plusOne (int[] nums) {
int val=1;
int[] arr=new int[nums.length+1];
for(int i=nums.length-1;i>=0;i--) {
int tmp=nums[i]+val;
arr[i+1]=tmp%10;
val=tmp/10;
}
if(val==1) {
arr[0]=1;
return arr;
}else {
return Arrays.copyOfRange(arr, 1, arr.length);
}
} /**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型一维数组
*/
function plusOne( nums ) {
// write code here
// let n = nums.join('');
// let s = BigInt(n)+BigInt("1");
// //console.log(n,s);
// return s.toString().split('');
return (BigInt(nums.join(''))+BigInt("1")).toString().split('');;
}
module.exports = {
plusOne : plusOne
};