Leetcode毎日1題:989.配列形式の整数加算c++実装


目次
  • 問題説明
  • 構想分析及びコード実現

  • 問題の説明
    非負の整数Xの場合、Xの配列形式は、各数字が左から右の順に形成される配列である.例えば,X=1231の場合,その配列形式は[1,2,3,1]である.
    非負の整数Xの配列形式Aが与えられ、整数X+Kの配列形式が返される.
    例1:
    入力:A=[1,2,0,0],K=34出力:[1,2,3,4]解釈:1200+34=1234例2:
    入力:A=[2,7,4],K=181出力:[4,5,5]解釈:274+181=455例3:
    入力:A=[2,1,5],K=806出力:[1,0,2,1]解釈:215+806=1021例4:
    入力:A=[9,9,9,9,9,9,9,9,9,9,9,K=1出力:[1,0,0,0,0,0,0,0]解釈:9999999999+1=10000000
    ヒント:
    1<=A.length<=10000 0<=A[i]<=9 0<=K<=10000 A.length>1の場合、A[0]!=0
    ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/add-to-array-form-of-integer著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
    構想分析とコード実現
    この問題はvectorに関して、最初は習ったことがないので、私はまずvectorの使い方を勉強しました.https://blog.csdn.net/qaqlalala/article/details/112992437実はvectorとpythonのlistは似ています.この問題では、2つの数の対応するビットを加算して、最後のビットから、10いっぱいになったら1に入り、sumを10減らしてsumをpush_で使うことができます.back(sum)をvectorに追加Kの値がAより大きい場合、余分なビットのKの値を追加する必要があります最後のビットからvectorに追加したいので、最後にreverse法で反転して結果を出力します
    class Solution {
         
    public:
        vector<int> addToArrayForm(vector<int>& A, int K) {
         
            vector<int> ans;
            int n = A.size();
            for(int i = n - 1; i >= 0; --i){
         
                int sum = A[i] + K % 10;
                K /= 10;
                if(sum >= 10){
         
                    K++;
                    sum -= 10;
                }
                ans.push_back(sum);
            }
            for(;K > 0;K /= 10){
         
                ans.push_back(K%10);
            }
            reverse(ans.begin(), ans.end());
            return ans;
    
        }
    };