给定一个用数组表示的数字,即数组中每个数表示一个数位上的数,例如 [1,2,3],表示 123 ,请问给这个数字加一后得到的结果(结果同样以数组的形式返回)。
注意:数组中不可能出现负数,且保证数组的首位即数字的首位不可能是 0 。
数据范围: 数组长度满足 ,数组中每个数满足
[1,2,3]
[1,2,4]
[1,9]
[2,0]
[9]
[1,0]
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); } }
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; } }