Description:
Solution (C++):
算法分析:
这一道题刚开始真的搞不懂是什么意思,现在明白了,意思就是给了一个整数,这个整数的各位数字用一个数组储存了,比如说给定4567,digits里就是:{4,5,6,7},那么题目要求是给这个数加1,然后输出运算结果,比如说这里应该就是{4,5,6,8}.但如果是{9,9,9},那么就应该是{1,0,0,0}.那么我们就要实现这样一个加法公式。
传统的加法实现就是:位数加位数加进位。结果与10的余数作为新的位数,结果与10的商作为新的进位。然后进行下一位的运算。运算方向从低位到高位。
这道题最开始巧妙的地方就是,将最初的加1直接看成进位。从而将程序简化很多。
程序分析:
传统的加法算法:
for(i=digits.size()-1;i>=0&&carry;i--){
int sum=carry+digits[i];
carry=sum/10; //进位计算
digits[i]=sum%10; //位数计算
}