【LeetCode大法】Plus One

题意:

Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.

You may assume the integer do not contain any leading zero, except the number 0 itself.

The digits are stored such that the most significant digit is at the head of the list.

原题链接:https://leetcode.com/problems/plus-one/#/description

我知道你看不懂,给你翻译翻译:

就是给你一串非负非空整形数组,数组是由整数构成,每一位都存在数组里面,最高位存在最前面,例如 998,那这串数组就是{9,9,8},然后做加1操作,返回一串数组出来。还是{9,9,8},返回是{9,9,9},如果是{9,9},则返回的是{1,0,0}


思路:无非就是从数组尾加上来,在这个过程需要一个记录因子,记录是否需要进位加1,然后把值存在一个新数组,再最后for完之后看看这个记录因子是1还是0,定返回数组的长度,1把这个返回因子加上去,0不加,然后把新数组加上去。


完美。


No BB

Show Me Code!

代码:

public static int[] plusOne(int[] digits) {
		int length = digits.length;
		int[] newDigits = new int[length];
		//記錄是否進位
		int recordDigit = 1;
		for(int i = length-1; i >= 0; i--){
			if(digits[i] == 9 && recordDigit == 1){
				newDigits[i] = 0;
				recordDigit = 1;
			} else {
				newDigits[i] = digits[i] + recordDigit;
				recordDigit = 0;
			}
		}
		int[] resultDigits = new int[length + recordDigit];
		if(recordDigit == 1){
			resultDigits[0] = 1;
		}
		for(int i = recordDigit; i < length; i++){
			resultDigits[i] = newDigits[i-recordDigit];
		}
		return resultDigits;
	}


呵呵,解决!

之后有时间再看看有没有什么其他更快的解法。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值