题目:Plus One
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.
题目分析:
- 将数字放在数组中存储,例如98,存储为数组arr=[9,8],然后对数字进行加一操作直接对数组进行,并将最后结果放在数组中。
思路:
- 从数组最后一位进行加一,然后判断是否需要进位,每一位都要判断
- 如果进位到了数组的第一个还需要进位,那么需要在数组的最前面增加一个元素1
代码:
- C++:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
for(int i=digits.size()-1;i>=0;--i)
{
if(digits[i]!=9)
{
digits[i]+=1;
return digits;
}
else
{
digits[i]=0;
}
}
digits.insert(digits.begin(),1);
return digits;
}
};
- Javascript:
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
var l=digits.length;
for(var i=l-1;i>=0;--i)
{
if(digits[i]!=9)//如果该位上的数不是9 那么直接将该位加1就可以了
{
digits[i]+=1;
return digits;
}
else//如果该位上的数是9 那么该位加1之后变成了0
{
digits[i]=0;
}
}
//跳出了for循环说明每一位都是9,那么数组长度不够存放,需要在数组最前面增加一个元素0的项
digits.splice(0,0,1);//在digits数组的index为0的地方添加元素1 中间的0代表删除0个元素
return digits;
};