989.配列形式の整数加算(アナログ)

LeetCode:989。配列形式での整数の加算

ここに画像の説明を挿入


模擬質問

手動の加算と減算



ACコードシミュレーション

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コードの簡潔なバージョン

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