plus-one java

来源:互联网 发布:购物车代码 java 编辑:程序博客网 时间:2024/06/08 03:13

题目描述


Given a number represented as an array of digits, plus one to the number.


题目大意

  给定一个用数组表示的一个数,对它进行加一操作。 
  每一个数位都存储在数组的一个位置上。数组下标从大到小表示数位从低位到高位。 

解题思路

  直接求解,设置一个进位标志carry,初值为1,表示加1,从最低位开始tmp = a[x] + carry, 
a[x] = tmp%10,carry = tmp/10,如果carry不为0对下一位再进行操作,直到所有的数位处理完或者carray为0就退出,如果最后还有carray不为0说明整个数组要扩展一个数位。 

代码:

package com.leetcode;public class PlusOne {public int[] plusOne(int[] digits) {int carry = 1; // 进位标志,下一位来的进位标志int tmp;for (int i = digits.length - 1; i >= 0; i--) {tmp = digits[i];digits[i] = (tmp + carry) % 10; // 计算当前位的新值carry = (tmp + carry) / 10; // 计算新的进位if (carry == 0) { // 没有进位了就可以退出了break;}}if (carry == 1) { // 最后还有一个进位int[] result = new int[digits.length + 1];System.arraycopy(digits, 0, result, 1, digits.length);result[0] = carry;return result;} else {return digits;}}}



0 0
原创粉丝点击