zoukankan      html  css  js  c++  java
  • 989. Add to Array-Form of Integer

    问题:

    给定一个数组A为某个数的各位数,和数字K,求给A组成的数字+K,所得的数字也像A做成数组返回。

    Example 1:
    Input: A = [1,2,0,0], K = 34
    Output: [1,2,3,4]
    Explanation: 1200 + 34 = 1234
    
    Example 2:
    Input: A = [2,7,4], K = 181
    Output: [4,5,5]
    Explanation: 274 + 181 = 455
    
    Example 3:
    Input: A = [2,1,5], K = 806
    Output: [1,0,2,1]
    Explanation: 215 + 806 = 1021
    
    Example 4:
    Input: A = [9,9,9,9,9,9,9,9,9,9], K = 1
    Output: [1,0,0,0,0,0,0,0,0,0,0]
    Explanation: 9999999999 + 1 = 10000000000
     
    Note:
    1 <= A.length <= 10000
    0 <= A[i] <= 9
    0 <= K <= 10000
    If A.length > 1, then A[0] != 0
    

      

    解法:

    从个位往十位,百位,千位,

    每次求K的各位数值:K%10,直接加给A[j]

    预留下的K/10,为下一位计算原数。

    对于加得之和,用flag记录进位,如果有进位,直接加给K。

    即K=K/10+flag

    A[j]则只保留个位,

    即A[j]=A[j]%10

    ⚠️注意,

    这里如果A的位数不够,

    判断 j<0 的时候

    需要insert(0)到A的开头A.begin()

    同时把要处理的 j 置为 0。

    代码参考:

     1 class Solution {
     2 public:
     3     vector<int> addToArrayForm(vector<int>& A, int K) {
     4         int flag=0;
     5         int j=A.size()-1;
     6         while(K>0){
     7             if(j<0){
     8                 A.insert(A.begin(),0);
     9                 j=0;
    10             }
    11             A[j]+=K%10;
    12             flag=A[j]/10;
    13             A[j]=A[j]%10;
    14             K=K/10+flag;
    15             j--;
    16         }
    17         return A;
    18     }
    19 };
  • 相关阅读:
    MySQL 8.0复制性能的提升(翻译)
    mongodb节点配置指南
    ProxySQL读写分离
    MySQL JOIN原理
    pt-summary
    Unity3D安卓打包参数配置与兼容性的关系分析
    unity3d 动画卡帧 动画合成 动画层次
    单机游戏计时器防作弊解决方案
    Unity3D占用内存太大的解决方法
    AndroidManifest.xml配置
  • 原文地址:https://www.cnblogs.com/habibah-chang/p/13031317.html
Copyright © 2011-2022 走看看