数组数字加一运算

 题目:  有一个用int数组表示的数字 digits, 求digits 加一运算后的int数组?

例如 :digits ={1,0}  , 加一运算后就是 {1,1};  digits= {9,9}, 加一运算后就是{1,0,0}

思路:一般情况下,直接使用digits[digits.length-1]++,就可以了,但是如果末尾是9的话,必须给这个数字前一位加1,最麻烦就是第一位也是9,那么这个数组长度就需要加一了,所以,只要设置一个boolean型来监控当前这位是否超过9。

 

public int[] plusOne(int[] digits) {
		if (digits.length < 1)
			return digits;
		boolean flag = false;  //判断当前是否超过9;
		int index = digits.length - 1;
		int i = digits[index] + 1;
		digits[index]++;
		if (i >= 10) {
			flag = true;
			digits[index] = digits[index] - 10;
		} else {
			
			return digits;
		}
		for (int j = index - 1; j > -1; j--) {

			int k = ++digits[j];
			if (k < 10) {
				flag = false;
				break;
			} else {
				digits[j] -= 10;
			}

		}
		if (flag) {
			int[] newdigits = new int[digits.length + 1];
			newdigits[0] = 1; //超过第一位9的话,需要前面进一位。
			for (int k = 0; k < digits.length; k++) {
				newdigits[k + 1] = digits[k];
			}
			return newdigits;
		}

		return digits;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值