Skip to content

Latest commit

 

History

History
37 lines (32 loc) · 1.18 KB

【Day 1】989. 数组形式的整数加法.md

File metadata and controls

37 lines (32 loc) · 1.18 KB

思路

遍历数组,把k加到最后一个元素num[n],把num[n]对10取余的余数加到结果res数组,对10取整后的结果重新赋给k;

循环上一步操作倒数第二个元素,直至数组遍历完或k值不大于0,则把剩下的数组元素或k加到res数组;

最后反转数组即可。

代码

class Solution {
    public List<Integer> addToArrayForm(int[] num, int k) {
        List<Integer> res = new ArrayList<Integer>();
        int n = num.length;
        while(true){
                if(n>0 && k>0){
                    num[--n] += k;
                    res.add(num[n] % 10);
                    k = num[n] / 10;
                }else if(n>0){
                    res.add(num[--n]);
                    
                }else if(k>0){
                    res.add(k%10);
                    k /= 10;
                    
                }else{
                    break;
                }    

            }
            Collections.reverse(res);
            return res;
        }
}

复杂度分析

  • 时间复杂度:O(max(n,logk)),其中n为数组的长度,k为k的位数。
  • 空间复杂度:O(1),除了返回值以外,使用的空间为常数。