leetcode:Plus One
來(lái)源:程序員人生 發(fā)布時(shí)間:2014-12-13 09:24:11 閱讀次數(shù):2903次
1、 題目
用數(shù)組保存的大數(shù),每個(gè)元素代表數(shù)的1位,將該數(shù)加1,求改變后的大小。
2、 分析
看到這1個(gè)我們會(huì)想到我們處理大數(shù)的時(shí)候利用高精度計(jì)算的方法,需要我們注意的地方有以下幾個(gè)方面:
1、 從數(shù)組的最后面開(kāi)始遍歷
2、 對(duì)當(dāng)前數(shù)加上低位的進(jìn)位
3、 獲得當(dāng)前位向高位的進(jìn)位
4、 每次得到進(jìn)位判斷下是不是為0,為0可以直接結(jié)束,可在1定程度上加快算法效力。
5、 最后1位需要注意,如果最高位有進(jìn)位,此時(shí)需要在最前面添加1個(gè)元素。
class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
int len = digits.size();
int carry = 1;
int flag;
for(int i=len⑴;i>=0;i--){
digits[i]+=carry;
flag = digits[i]%10;
carry = digits[i]/10;
digits[i] = flag;
if(!carry)
break;
}
if(carry)
digits.insert(digits.begin(),carry);
return digits;
}
};
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)