题解 | #大数加法#

大数加法

https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475

const int MAXN = 200000;//??这里注意
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    string solve(string a, string b) {
    int sum[MAXN]={0},int_a[MAXN]={0},int_b[MAXN]={0};
    string temp;
    int n=a.size(),m=b.size();
    int maxn=max(n,m);
    for (int i = 0; i < n; i++)
    {
        int_a[i]=a[n-1-i]-'0';
    }
    
    for (int i = 0; i < m; i++)
    {
        int_b[i]=b[m-1-i]-'0';
    }
    
    int rest=0;
    for (int i = 0; i <= maxn; i++)
    {
        sum[i]=(int_a[i]+int_b[i]+rest)%10;
        rest=(int_a[i]+int_b[i]+rest)/10;
    }
    
    int rest_on=0;//判断最高位的数是否为零
    for (int i = maxn; i >=0; i--)
    {
        if (sum[i])
        rest_on=1;
        if(rest_on==1)
        temp+=sum[i]+'0';//这里将从数组的最高位上的数组装到字符串从左到右
    }
    if(temp.size()){
        return temp;
    }
        
    else{
        return "0";
    }
        
    }
};

想问下大佬们,MAXN这里为什么如果比20 0000 小了就溢出越界了呀?

#悬赏#
全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务