首页 > 其他 > 详细

leetcode: Plus One

时间:2016-06-03 02:13:51      阅读:276      评论:0      收藏:0      [点我收藏+]

问题描述:

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

?

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

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

?

问题分析

 这个问题比较简单,从原来的描述里可以看到,它的最高位保存在数组的最开头。所以如果要对这个数字加1的话,需要从末尾开始向前累加。需要注意的问题是可能会导致进位。所以一种办法是先声明一个列表,每次将数字相加的元素放到这里,一直加到最后。然后再将这个列表反转过来再返回结果就可以了。

  详细实现如下:

?

public class Solution {
    public int[] plusOne(int[] digits) {
        List<Integer> list = new ArrayList<>();
        int carry = 1;
        for(int i = digits.length - 1; i >= 0; i--) {
            int tmp = digits[i] + carry;
            carry = tmp / 10;
            list.add(tmp % 10);
        }
        if(carry != 0) list.add(carry);
        Collections.reverse(list);
        int[] result = new int[list.size()];
        for(int i = 0; i < list.size(); i++) result[i] = list.get(i);
        return result;
    }
}

?

leetcode: Plus One

原文:http://shmilyaw-hotmail-com.iteye.com/blog/2302035

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!