Plus One @LeetCode

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;

    }



}


你可能感兴趣的:(LeetCode)