leetcode:Plus One
生活随笔
收集整理的這篇文章主要介紹了
leetcode:Plus One
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
題意:一個非負(fù)整數(shù)按位存儲于一個int數(shù)組中,排列順序為:最高位在array[0] ,最低位在[n-1],例如:18,存儲為:array[0]=1; array[1]=8;
思路:可以從數(shù)組的最后一位開始加1,注意需要考慮進(jìn)位,如果到[0]位之后仍然有進(jìn)位存在,則需要在數(shù)組起始處新開一個位來存儲。
分析:從低位到高位,只有連續(xù)遇到9的情況最高位才能加1進(jìn)位。所以代碼如下:class Solution { public:vector<int> plusOne(vector<int>& digits) {int len = digits.size();int i=0;for(i=len-1;i>=0;i--){if(digits[i]<9){digits[i]+=1;break;//只要最低位到最高位有一個低于9就不會產(chǎn)生[0]位之后的進(jìn)位}else {digits[i]=0;}}
//各位全是9時if(i==-1){digits.insert(digits.begin(), 1);}return digits;} };
其他解法:(非常容易理解)
class Solution { public:vector<int> plusOne(vector<int>& digits) {int i = digits.size() - 1;//相當(dāng)于n=digits.size,i=n-1int carray = 1;while(i >= 0){if(carray == 1){int sum = digits[i] + 1;digits[i] = sum % 10;if(sum < 10){carray = 0;break;}}i--;}if(carray == 1){digits.insert(digits.begin(), 1);}return digits;} };
轉(zhuǎn)載于:https://www.cnblogs.com/carsonzhu/p/4557147.html
總結(jié)
以上是生活随笔為你收集整理的leetcode:Plus One的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安全问题-携程可能摊上大事了——崩溃原因
- 下一篇: OenLDAP 配置记录