【力扣】加一 一次遍历-相对快的题解

📚题目名称:加一
📚题目编号: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;
    }
};
posted @ 2020-04-26 19:52  Aeterna_Gungnir  阅读(119)  评论(0编辑  收藏  举报