给出用数字数组表示的一个非负整数,请对该整数加1。
import java.util.*; import java.math.*; public class Solution { public int[] plusOne (int[] digits) { // write code here String s = ""; for(int i=0;i<digits.length;i++){ s += digits[i]; } BigInteger a = new BigInteger(s); BigInteger num = a.add(BigInteger.valueOf(1)); String t = ""+num; int []result = new int[t.length()]; for(int i=0;i<t.length();i++){ result[i] = t.charAt(i)-'0'; } return result; } }
import java.util.*; public class Solution { /** * * @param digits int整型一维数组 * @return int整型一维数组 */ public int[] plusOne (int[] digits) { // write code here int len = digits.length; boolean pre = false; for (int i = len - 1; i >= 0; i--) { int temp = 0; if (i == len - 1) { temp += 1; } if (!pre) { temp += digits[i]; } else { temp += digits[i] + 1; pre = false; } if (temp >= 10) { pre = true; digits[i] = temp - 10; } else { digits[i] = temp; return digits; } } int[] result = new int[len + 1]; result[0] = 1; for (int i = 1; i < len + 1; i++) { result[i] = digits[i - 1]; } return result; } }
public class PlusOne { public int[] plusOne(int[] digits) { if(digits.length<=0){ return null; } int len=digits.length; int[] a=new int[len+1]; int num=1; for(int i=len-1;i>=0;i--){ num+=digits[i]; a[i+1]=num%10; num/=10; } if(num!=0){ a[0]=num; } int[] b; if(a[0]==0){ b=Arrays.copyOfRange(a, 1, a.length); }else{ b=a; } return b; } }
public class Solution { public int[] plusOne(int[] digits) { if (digits == null || digits.length == 0) { return digits; } int i = digits.length - 1; while (i >= 0) { digits[i]++; if (digits[i] != 10) { return digits; } else { digits[i] = 0; i--; } } if (digits[0] == 0) { digits = new int[digits.length + 1]; digits[0] = 1; } return digits; } }
/**
* 66. Plus One
* 加一
* 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
* @author shijiacheng
*
*/
public class Solution {
public int[] plusOne(int[] digits) {
int n = digits.length;
for(int i = n-1;i>=0;i--) {
if(digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
int[] newDigits = new int[n+1];
newDigits[0] = 1;
return newDigits;
}
public static void main(String[] args) {
Solution s = new Solution();
int[] digits = {9};
int[] newDigits = s.plusOne(digits);
System.out.println(newDigits[0]);
}
}
public class Solution {
public int[] plusOne(int[] digits) {
if (digits == null || digits.length == 0)
return digits;
int ca = 1;
for (int i = digits.length - 1; i >= 0; i--) {
int digit = (digits[i] + ca);
ca = digit / 10;
digits[i] = digit % 10;
if (ca == 0)
return digits;
}
int[] res = new int[digits.length + 1];
res[0] = 1;
return res;
}
}
public class Solution {
//1.不需要flag! 从右向左,遇到9就变0,非9就加1,然后break; //2.digits[0]如果等于0,说明长度增加了1,则新建数组,首位为1,其他位为0; public int[] plusOne(int[] digits) { for (int i = digits.length-1; i >= 0 ; i--) { if (digits[i] == 9)digits[i] = 0; else { digits[i] = digits[i]+1; break; } } if (digits[0] == 0){ int[] arr = new int[digits.length+1]; arr[0] = 1; for (int i = 1; i < arr.length; i++) arr[i] = 0; return arr; } return digits; }
import java.math.BigInteger; public class Solution { public int[] plusOne(int[] digits) { String s = ""; for(int i:digits) s+=i; BigInteger b = new BigInteger(s); b=b.add(new BigInteger("1")); String d = b.toString(); int[] result = new int[d.length()]; for(int i = 0; i < d.length(); i++){ result[i] = Integer.parseInt(""+d.charAt(i)); } return result; } }
import java.math.BigDecimal; public class Solution { public int[] plusOne(int[] digits) { String s = ""; for (int i:digits){ s += i; } s = new BigDecimal(s).add(BigDecimal.valueOf(1)).toString(); int[] res = new int[s.length()]; for (int i = 0; i < s.length(); i ++ ) { res[i] = s.charAt(i) - '0'; } return res; } }