【力扣】加一 一次遍历-相对快的题解
📚题目名称:加一
📚题目编号:66.
🔗题目链接:https://leetcode-cn.com/problems/plus-one/
🔗我的力扣:https://leetcode-cn.com/u/cc_odeprg/
#题目描述#
#样例#
- 思路:从末位向前逐位模拟十进制加法器,首位进行单独判断
- 结果:不知道测评算法是什么,代码不变,提交四次结果均不一样,四次取平均下来耗时2ms, 内存占用7.8m,其中两次均击败100%,
一开始其实想用只取两位来算,后来发现进位问题没顾上,哈哈😅
SRC_CODE:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {/*
if (digits.size() == 0 || digits.size() == 1 && digits[0] == 0 || digits.size() == 1 && digits[0] / 10 == 0) {
int d = digits[0] + 1;
if (d >= 10) {
digits.clear();
digits.push_back(d / 10);
digits.push_back(d % 10);
} else {
digits.clear();
digits.push_back(d % 10);
}
return digits;
}
int d = digits[digits.size() - 2] * 10 + digits[digits.size() - 1] + 1;
digits[digits.size() - 1] = d % 10; digits[digits.size() - 2] = d / 10;
return digits;*/
int size = digits.size();
for(int i = size - 1; i >= 0; --i){
if(digits[i] < 9){
++digits[i];
return digits;
}
if(i == 0){
digits[i] = 1;
digits.push_back(0);
}
else
digits[i] = 0;
}
return digits;
}
};