给出用数字数组表示的一个非负整数,请对该整数加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;
}
}