Loading

LeetCode 66 加一

LeetCode66 加一

题目描述

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

样例

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

算法分析

  • 用t表示进位后这个数的值, t%10 与 t/=10; 就是这个数要保留的,和当进位的
  • 如果最后还要进位,添加一个

时间复杂度

\(O(n)\)

Java代码

class Solution {
    public int[] plusOne(int[] digits) {
        int n = digits.length;
        List<Integer> list = new ArrayList<Integer>();
        for(int i = n-1; i >=0; i --){
            list.add(digits[i]);
        }

        int t = 1;
        for(int i = 0; i < list.size(); i++){
            t += list.get(i);
            list.set(i,t%10);
            t/=10;
        }

        if(t != 0){
            list.add(t);
        }

        int[] ans = new int[list.size()];
        for(int i = 0; i < list.size(); i++){
            ans[i] = list.get(list.size()-1-i);
        }
        
        return ans;
    }
}
posted @ 2020-11-16 20:21  想用包子换论文  阅读(71)  评论(0)    收藏  举报