PlusOne

问题描述:一个数组每一位代表一个数字的每一位。数字高位在数组的低位。求数字加1后得到新数组。

算法分析:要从数组的高位到低位进行遍历。

public class PlusOne
{
	public int[] plusOne(int[] digits) 
	{
		int len = digits.length;
		int carry = 0;
		digits[len-1] += 1;
		if(digits[len-1] >= 10)
		{
			digits[len-1] = digits[len-1]-10;
			carry = 1;
		}
        for(int i = len-2; i >=0 ; i --)
        {
        	digits[i] += carry;
        	if(digits[i] >= 10)
        	{
        		digits[i] = digits[i] - 10;
        		carry = 1;
        	}
        	else
        	{
        		carry = 0;
        	}
        }
        if(carry == 1)
        {
        	int[] array = new int[len+1];
        	for(int i = len; i > 0; i --)
        	{
        		array[i] = digits[i-1];
        	}
        	array[0] = 1;
        	return array;
        }
        else
        {
        	return digits;
        }
    }
	
	public int[] plusOne2(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[] array = new int[n+1];
		array[0] = 1;
		return array;
	}
}

 

posted @ 2016-08-16 17:11  32ddd  阅读(115)  评论(0编辑  收藏  举报