989. 数组形式的整数加法 ( 模拟 )

LeetCode:989. 数组形式的整数加法

在这里插入图片描述


模拟题

手动加减法



AC Code 模拟

class Solution {
    
    
    public List<Integer> addToArrayForm(int[] a, int k) {
    
    
        // 手动加减法题型
        // 1 <= A.length <= 10000 
        int alen = a.length;
        List<Integer> list = new ArrayList<>();
        
        int r = 0;
        // 从个位开始处理
        for(int i = alen - 1; i >= 0; i--) {
    
    
            int tmp = a[i] + k % 10 + r;
            // 进位
            r = tmp / 10;

            // 大于等于 10 了
            if(tmp > 9) tmp -= 10;
            list.add(tmp);
            k /= 10;
        }

        while(k != 0) {
    
    
            int tmp = k % 10 + r;
            // 进位
            r = tmp / 10;
            
            if(tmp > 9) tmp -= 10;
            list.add(tmp);
            k /= 10;
        }
        // 处理进位
        if(r != 0) list.add(r);

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





AC Code 简洁版

class Solution {
    
    
    public List<Integer> addToArrayForm(int[] a, int k) {
    
    
        List<Integer> list = new ArrayList<>();
        int lastNum = k, len = a.length;
        
        int idx = len - 1;
        while(idx >= 0 || lastNum > 0) {
    
    
            if(idx >= 0) {
    
    
                lastNum += a[idx--];
            }

            // 取走末尾的数
            list.add(lastNum % 10);
            lastNum /= 10;
        }
        Collections.reverse(list);
        
        return list;
    }
}



猜你喜欢

转载自blog.csdn.net/qq_43765535/article/details/112976347