Plus One @LeetCode

2014-11-24 09:01:48 · 作者: · 浏览: 0
import java.util.Arrays;


/**
 * Plus One
 * 
 * Given a number represented as an array of digits, plus one to the number.
 */
public class S66 {

	public static void main(String[] args) {
		int[] digits = {9,9,9};
//		int[] digits = {0};
		System.out.println(Arrays.toString(plusOne(digits)));
	}
	
	public static int[] plusOne(int[] digits) {
		int i = digits.length-1;
		int overflow = 0;		// 用来表示是否overflow了
		// 从尾到头加
        while(i >= 0){
        	if(digits[i]+1 > 9){	// 加完大于9的情况
        		digits[i] = 0;
        		overflow = 1;
        		i--;
        	}else{		// 加完小于10的情况
        		digits[i] = digits[i]+1;
        		return digits;
        	}
        }
        
        // 这种情况是当前位数不够用,就必须新开数组,
        // 处理首位
        if(overflow >
0){ int[] newDigits = new int[digits.length+1]; System.arraycopy(digits, 0, newDigits, 1, digits.length); newDigits[0] = 1; newDigits[1] = 0; return newDigits; } return digits; } }